首先要承认,大学毕业的时候我是个糟糕的程序员。我拿到了学位,学到了一大堆书本知识,然后,我开始做一个不太重要的项目,每天晚上花大量的时间做简化。 起初,一切正常,但是我的代码风格一直在添乱。复制、粘贴、蹩脚的命名,混乱的思考,而且总用长期连续运行的方法,执行各种各样本可以分开的任务。几个月之后,我意识到一个严峻的现实:这个项目要崩溃了。原本我以为一个人开发,可以避免混乱。但是最终不得不承认,这个项目被我弄得一团糟,没法维护,更别说去理解了。
尽管我的代码通常能正常运行,但我确实在编码时玩忽职守,因为我写的代码,不经过仔细重构,没人能看懂。那时,我是个超高效的技术债务制造者。 你一定不想那样。
再简单的问题,一个糟糕的程序员都能把它变复杂。——Steve Bohlen
哇,Steve是在说我吧?我早期的项目就很好验证了这句话。没有良好的实现,再简单的逻辑都能变得晦涩难懂。早期的经验让我明白,我该研究下怎么改进代码风格了。
什么是整洁的代码?
代码整洁是一种以读者为中心的开发风格,以此开发的软件易于读写和维护。开发人员总以为他们的工作在应用程序能够正常运行时就完成了。但是我们编写代码,并不只是为了给计算机用。
编码是一种和另外一个人交流你希望计算机做什么的艺术。–Nonald Knuth
保持代码整洁,首先要意识到你的读者不只是计算机,还是活生生的人!牢记这个原则,我们来讨论代码整洁之所以重要的七个简单理由。
1. 你是个作家
想让妈妈觉得你很厉害?告诉她你是个作家!作家就是那些练习写作并以此为职业的人。开发人员每天都在写。但是作为开发人员,我们总会忘记我们写的每一行代码都会被人阅读十遍以上。这些人,就是我们的同事。他们阅读代码,忙着修复漏洞和添加新的特性。
卓越的作家以写叙述清晰、扣人心弦的故事著称于世。他们使用诸如章节、标题和段落等工具,有条理组织他们的想法,并耐心的引导读者。开发人员的工作模式也很类似,只是他们简单的使用命名空间、类和方法这些行话来讲述故事罢了。
代码整洁的人能够聪明使用这些工具来降低复杂度,使故事变得清晰。
2. 代码整洁是基础
近年来,专业的重构、单元测试、测试驱动的开发等软件实践备受关注。这些实践提升了代码质量和软件的可维护性。实现代码整洁的原则是一项基本技能,它的优势会在进行重构代码或者对代码进行单元测试时显现。代码整洁的原则使得源代码高度模块化并且易于阅读和测试。如果将那些软件实践看作是房子的话,整洁的代码则是地基。
3. 证明你的技能
假设你正在参加一场技术面试。如果被问到代码质量,为证明你的代码质量,你能够举出专业且合理的理由吗?
或者,你会这样回答?
如果这就是你关于代码整洁所能想到的,那可是个坏兆头。如果你从未有条有理的深入思考过代码风格的质量问题,那么你可以改进的机会估计很多。代码整洁的人能够传授很多他们使用的具体行为、模式和技巧。但是,代码整洁毕竟不是偶然现象,它要求可行的规律的专注于清晰的表达意图。
能够被衡量的东西,都能被管理。—— Peter Drucker
建立一个整洁代码的词汇表,不仅有利于面试和提升代码质量;而且,在代码审查时,建立大家公认的代码可读性的词汇表和框架,能够促进冷静的对话。
4. 读代码才是难事
开发人员常以能够解决难题为傲。不过相对来讲,写代码比较简单,读代码才是件难事。这就是为什么 Eric Lippert 写文章说阅读代码很难。这也是为什么这么多的程序员宁愿重写,也不愿做阅读和理解已有的代码这种苦差事。既然看代码原本就很挑战,如果一些代码你写的时候都只能勉强理解,你会发现过后你一点都看不懂。专业的程序员写了太多的代码,以至于只要间隔几周,就能忘记大部分的结构和设计,像以全新的视角看这个项目。过段时间看不懂自己的代码确实是很尴尬的事。相信我,我经历过好几次。
5. 技术债务让人沮丧
马虎混乱的代码会给我们的项目埋下技术债务。仔细考虑情境时,技术债务也会是有用的,但是过度的技术债让人沮丧,并且会导致团队的人才流失。当简单的事情变得复杂时,开发人员就会开始撤退去别的地方了。他们更看重工作质量带来的成就感,而不是工作数量。技术债务会降低代码重用的机会,并且处处拉低其他代码库的质量。
6. 你太懒惰
PERL语言的作者Larry Wall说过程序员的三大美德:懒、缺乏耐心、自大。是的,在合适的情境中,懒惰确实是积极因素。早些年,当我还在跌跌撞撞的写代码的时候,我认识到保持代码整洁所付出的艰辛真的会得到回报。专业的开发人员努力做到正确的懒惰。这种懒惰是把更多的精力放到代码中,以至于开始时不难写,以后也不会难以重用。代码整洁不会多花费很多时间,而且一旦你掌握这些原则,你的编码速度实际上会更快。因为精炼的、表达充分的代码***的优点就是易于管理。
人们处于压力中时,容易偷工减料并且忽略***做法。然而像Bob Martin大叔在他的《代码整洁之道》中提醒我们的那样:我们没有时间不认真。长远来看,马虎草率所增加的出错次数和后期的维护代价,最终会拖延项目速度。历史经验告诉我们,后期你基本不可能有时间再去整理你的代码。所以为什么不在一开始就好好做呢?
7. 不要成为那个动词
好吧,其他的原因都解释的站得住脚,但是这个理由最关键。大家都知道前同事的名字变成动词来描述“脏”代码的事:糟糕,这些代码是Jimmy写的。“Oh man, this code has been Jimmy’d.”
这样的评价,简直就是长远就业前景的克星啊。我们都希望未来的职位上,同事能够推荐或者录用我们不是吗?想要确保今后同事会推荐你,并且期待和你以及你的代码合作,让别人知道你的代码整洁是***的方式。
代码整洁的原则
以下是代码整洁的三个核心原则:
1. 选择正确的工具
2. 优化信噪比
3. 尽***努力写出能够自解释的代码
Cory在PluralSight的新课程代码整洁之道:写代码给人看详细的阐述了这三个原则。如果你有兴趣提升代码质量,建立评价和编写整洁代码的词汇库,去看看吧!
关于作者
Cory House,软件架构师,独立顾问,Pluralsignht作者,INETA社区英国发展会议正式发言人。精通响应式网页设计、代码整洁之道以及臭高尔夫球技。
原文链接: Micheal Shallop 翻译: 伯乐在线 - Victoria