新手程序员在工作中需要注意的问题

需要学习的最重要的东西是“自我规范”。这些规范就是:尽可能地写出最简洁的代码;如果代码后期会因为改动而变得凌乱不堪就得重构;尽量删除没用的代码,并添加注释。

请谨记这一点,要懂得“自我规范”,也不能一旦代码“起效了”就立马置之脑后。如果所有的变量都命名错误,但是代码依然可以完美地运行,那么这些代码绝对乱糟糟得让人不忍直视。将功能代码改进为简洁代码可能在短期内是看不到回报的。这就是为什么你需要“自我规范”这一步骤了。这也是为什么实习工作是如此必要:一个好的上司是相当注重代码质量的(即使所谓“好代码”的定义对于每个程序员都不一样),从而迫使实习生和初级程序员不得不反复修改。

下面本文举的例子都是新手程序员写代码的时候经常出现的:

名不副实的函数/变量/类

这些函数、类和变量实际所做的事与其名字所表达的含义并不一致。片面看名字是正确的,但是联系实际的话,有的甚至是毫不相关的。

举个例子,这两个类:EditorGUI和EditorObjectCreatorGUI。用于处理编辑界面的代码。用于创建新对象的是EditorGUI,而EditorObjectCreatorGUI只能通过处理不同的对象进行导航。两者的含义居然是截然相反的!即使代码还算相对简单,但还是花了相当长的一段时间用来理解它,因为在一开始是在一种完全相反的假设基础上来理解的。这种情况的解决方案非常简单:重命名EditorObjectCreatorGUI为EditorObjectNavigationGUI即可,这样就易于理解多了。

这种情况有很多。之所以会发生这种情况是因为代码在工作过程中发生了演变。在选择名字的时候可能还是正确的,但到了写完代码的那一刻,就名不副实了。关键是要时刻铭记命名法则。你得明白你添加的东西是否依然符合函数和类的名称。(西安尚学堂)软件开发

混乱的类

另一个问题是类很乱:类做了很多不相关的事情。新功能的添加很简单,慢慢的你会发现你的代码变得臃肿不堪,各种不相关的功能随处可见。有时候臃肿与否也并不指的是类的大小:某个类可能只有几百行,但依然囊括了不属于它的代码。

为什么会发生这种情况呢?举个例子:假设由于某种原因,某个GUI类需要分析什么样的纹理可行。如果这个GUI类是唯一需要这个分析结果的类,那么在GUI类中这样做是有意义的。然而,由于某种原因,一个完全无关的gameplay类也需要这些信息。所以你需要将这些纹理查询的信息从GUI类传给gameplay类。这时候,其实这个GUI类已经变大了:因为它里面其实还包括了TextureAnalyser类。解决方法也简单:将TextureAnalyser类分割为一个单独的类,GUI类和gameplay类都可以使用它。

关于这一条经验法则很多人提出质疑:要是我添加的功能仍然适合原来这个类的名字呢?如果的确不适合,那么我就必须重命名。或者将其分割成单独的类,抑或用代码写成一个不同的类吗?

如果你不能为你的类想出一个合适的名字,给人的感觉就会不舒服。如果你不能在类的名字中描述它的目的,那么就会显得乱七八糟。有时候我们还需要将某个臃肿的类分割成几部分,并各自取一个恰当的名字。

  

过于庞大的类

这和上一点——混乱的类有些类似:很多东西一点一点地都添加到类中,然后它不可避免地就臃肿了。在这种情况下,这样一个类仍然是有意义的,但就是长得太大个了点。这么个庞然大物不但繁琐,而且很容易出现bug,因为大量的代码需要用于操作同一个私有成员变量,所以我们很容易忽视一些细节。

分割一个已经长得很大的类其实是相当枯燥的。这也会成为一个挑战,如果类中的代码高度交织在一起的话。再加上它已经在工作,修复时不能添加新功能,这样一来,我不得说,分割一个过于庞大的类,不能严格地自我规范是不行的。

根据在Ronimo的普遍经验,类保持在500行代码以下、函数保持在50行代码以下是最合适的。不过有时候,这样做反倒不可行,也不明智。但是一般说来,一旦类或函数超出了那个界限我们就可以想办法重构,并将之分割为更小更易于管理的片段了。

  

关于代码注释

几乎所有的示例代码都会包含注释好了的代码片段,而不说明为什么。这段代码需要修复吗?旧的代码是否已经被取代了?为什么那儿要写这些代码?大家都知道没有注释的代码常常不知所言,但不知何故,很多人都会忘记在自己的代码上注释。

  

并行逻辑和代码重复

还有一个问题就是我经常能在若干个代码段处看到相似的逻辑。

例如,我们可以从纹理这个名称知道它大概的目标对象,比如说是“TreeBackground.dds”。

为了知道纹理是否可以用于tree,我们检查了文件名以便知道它是不是以“tree”开的头。可能使用SDK的话我们用filename.beginsWith(“tree”)可以很快地检测出来。只是这句代码这么短,我们往往会选择哪个地方需要,就直接复制粘贴。当然这样就是代码重复了,而正如每个人都知道的,我们应该避免重复代码,但如果复制的代码是如此之短,我们往往会忘记这一点,很自然地就直接copy了。此处我们面对的问题也是显而易见的:也许后面我们检查某个纹理是否适合tree的方法就得变了,然后我们就不得不实行“霰弹式修改”(即到处修改)策略,一处一处地修复。

此处的一般规律是,如果是非常具体的代码,那就不要复制,即使原本的代码超级之短,调用函数甚至比直接写需要更多的代码,也应该封装成函数。

上面讨论的这些内容已经讲得非常透彻了。很多内容甚至你在大学中就学过。但是现在要面临的挑战是你需要一步步地从被动遵守到主动铭记于心养成一种习惯。

时间: 2024-10-08 14:21:51

新手程序员在工作中需要注意的问题的相关文章

程序员在工作中遇到最郁闷的事情

1:自我感觉很牛X的领导 2:自我感觉什么都会的开发程序员 3:没有架构的软件 4:没有任何文档的开发 5:没有注释的程序 6:自己开发完后自己都搞不懂的代码 7:需求不断的变更 8:加班加到吐 9:突击完成项目后.但是公司减掉你的加班时间,并且还说你效率不行 10:"我写代码的时候一个BUG都没有"的牛人 11:辛辛苦苦工作,到发工资的时候拖很长时间 其它的希望程序猿们可以补充.天下奇葩事情很多.为什么程序猿要很受伤. 程序员在工作中遇到最郁闷的事情

很惊讶,程序员在工作中的幸福感竟然是?????

今天我们程序员们组织了一场软技能的讨论,讨论的主题是软件工程师在工作中的幸福感是什么?出乎意料的是,有好几点都不在我的意料之中,而且竟然很多都充满正能量,更惊讶的是,我们程序员的幸福感竟然这么的简单和质朴,当然,这个只是我们这个团队里面的同事的一些想法,不能代表整个行业的想法,但是一叶知秋,窥一斑而知全豹.下面具体分享一下,如果能给大家一点启发和思考,则这篇文章就没白写了. 1.自身成就幸福感,别人对你的认可得到的幸福感,在这个Team被认可. 2.做自己感兴趣的工作. 3.在自己的期望范围之内

给新手程序员的16个工作必备小妙招,省下时间去LOL吧!

写在前面: 这个文章核心并不是程序优化的具体技巧,而是拿到一个问题如何思考和利用工具的通用方法.比如即使我们不知道 profiler 这个东西,通过搜索"代码 每一行 时间"也可以很快知道有这样的工具叫做 profiler,并且学会怎么使用.即使不知道 rand 这个函数怎么加速,通过搜索引擎也可以找到别人写好的现成代码.另一方面是发现瓶颈之后也不要着急自己修复,如果不是特别一目了然的话,先看看别人是怎么做的.站在巨人的肩膀上,事半功倍. 1.多看看「官方文档」 我们很多的问题和技术细

十年京东Java程序员的工作总结,写给迷茫中的你!

很多年前,刚刚从大学毕业的时候,很多公司来校招.其中最烂俗的一个面试问题是:"你希望你之后三到五年的发展是什么?".我当时的标准回答是(原话):"成为在某一方面能够独当一面的技术专家".后来经历了几家不同的公司,换了不同的方向,才知道这个真是一个很难的问题.因为兵无常势,什么东西都是在不断的变化,一早的时候看好的东西可能会被淘汰. (几乎)没有人能够看准技术的下一个方向,因为这个问题实在是太难了,能够做到这一点的你就成为了技术界的巴菲特了.比如说11年加入Googl

新手程序员应该知道的七件事

如果你刚进入专业的软件开发世界,那么得益于在计算机科学和编程方面的教育和/或培训,你已经具备了一定的知识.但是真正的开发业务工作又和在学校编程不同,这是你不可能从大学课程或编码学校中学会的东西. 无论你是一个刚毕业开始自己第一份开发工作的大学生,还是在编程领域有一定工作经验的年长者,以下是总结了哪些技能和知识是第一次写代码就应该掌握的,希望对新手程序员能够有帮助. 1.了解底层系统 软件开发的一个重要组成部分是,了解编程语言.但是,正如有些人建议的那样,开发人员还需要了解堆栈下面是怎么回事. "

写给新手程序员的一封信

首先,欢迎来到程序员的世界.在这个世界上,不是有很多人想创造软件并解决问题.你是一名hacker,属于那些愿意做一些有挑战性的事情的人. “当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题.” – WhyTheLuckyStiff 对于下面的文字你不必完全接受,所有这些来自一个其貌不扬的程序员.我喜欢把事情做到最好,而不是对原来的东西修修补补. 仅仅是因为爱好开始做一些创新,这是一个很好的开始!如果你说“我要先学习一下再开始做”那么你永远不会真正开始.每个人都需要从某个地方开始,所以现

作为一名新手程序员该怎么成长?

作为一名开发者,自己既笨又没有准备,被老板知道了,我就要被炒鱿鱼了-作为一名新手程序员在刚刚进入到工作领域的时候,经常会有这种想法,这种想法会打击自己的自信心,特别是涉及到写代码的时候. 下面我要介绍一些关于新手开发人员可以提升自己的职业生涯和前景的关键策略,并且能够在工作期间保持一种健康的心态. 无论是你正在智通人才网找你的第一份工作,还是正盯上了潜在的晋升通道,在一定的程度上都需要跟其他开发者竞争,为了可以从中脱颖而出,下面这些关键的步骤可以帮你迈向成功. 1.找一种你喜欢用到工作中的语言.

新手程序员必备的知识储备有哪些

很多学习了北风网专业课程的朋友,都能如愿到心仪的相关企业任职,首先,北风网向你们表示祝贺,同时关于新手程序员所需要的知识储备情况,特此总结了一篇文章,以供参考: 1.版本控制系统(VCS) VCS 也许是计算机课程最大的疏漏.这些课程光记得教如何写代码,但却往往忘记教学生如何去管理代码.每一个程序员都应该懂得利用 Git 或 Subversion 有效地创建 repository(仓库),编辑与提交代码,进行分支与合并,了解项目工作流. 2.学会写作 身为程序员要写的不只有代码.你还要写项目的发

这个时代,毕业生将很难找Java程序员的工作

相信在现在这个时代,有很多学生选择专业的时候,都会选择热门的计算机专业,因为目前信息化时代,计算机专业不仅是挣钱最多的专业,而且还是接触科技最前沿技术的专业,无论是现在的AI人工智能,还是大数据开发以及云计算等等热门的岗位,都跟计算机有着千丝万缕的直接关系. 但是令人恼火的是,很多计算机专业的学生毕业是根本找不到软件开发程序员工作的,很多人疑惑为什么计算机专业的学生找不到程序员开发的工作?今天小编给大家详细的说说. 计算机专业学生毕业找不到程序员开发工作的几点原因: 1. 最直接的原因就是计算机