写过什么样的代码才是真的程序员?
作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。
1:团队精神和协作能力把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
2:文档习惯说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
3:规范化,标准化的代码编写习惯作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力。测试习惯作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,
代码重要吗?当然,代码是设计,而代码是最有价值的可交付成果。但你真的能写代码吗?你的代码应该如何定义它?
好的代码就像一本好书,有着优秀的写作技巧,经久不衰的回味,清晰的章节,清晰的主题。它也像一辆配备了卓越音质和杯托的汽车。当汽车达到最高速度时,你听不到噪音,也不担心水会溢出。当它发生故障时,任何一个修理工都可以使用最常用的工具在最短的时间内很容易地修复它——坏代码就像一本刚起步的作家写的书。每一章都没有明确的目的。整章都在重复一个句子。故事还没有完全定论。就像一辆车保证你的最大速度可以达到200英里每小时,但声音只能播放旧的磁带,并且杯架是不稳定的。当你调整反射器的角度时,汽车会突然抛锚,普通的修理工无法修理汽车。他们得找专家在生产线上用专业工具来修理。
开发人员花费大量的工作时间不是编写代码,而是阅读代码、调试代码、查阅他人提交的开发文档、学习新的库等;在阅读代码时,开发人员实际上扮演着代码解释器的角色,在脑海中执行代码,并且试着记住当前的执行状态这就是为什么程序员在阅读代码时会心烦意乱。
编写时的可维护性:是指程序或系统上线后弹出的bug,开发团队可以在没有其他bug的情况下及时将bug排除。保持方法的原子性,提高代码的内聚性,可以最大限度地减少某些修改的影响,使某些方法的错误不会影响其他模块的正常运行。写时可维护性还包括代码的“可测试性”。