代码整洁之所以重要的七个理由

简介:

首先要承认,大学毕业的时候我是个糟糕的程序员。 我拿到了学位,学到了一大堆书本知识,然后,我开始做一个不太重要的项目,每天晚上花大量的时间做简化。 起初,一切正常,但是我的代码风格一直在添乱。复制、粘贴、蹩脚的命名,混乱的思考,而且总用长期连续运行的方法,执行各种各样本可以分开的任务。几个月 之后,我意识到一个严峻的现实:这个项目要崩溃了。原本我以为一个人开发,可以避免混乱。但是最终不得不承认,这个项目被我弄得一团糟,没法维护,更别说 去理解了。

尽管我的代码通常能正常运行,但我确实在编码时玩忽职守,因为我写的代码,不经过仔细重构,没人能看懂。那时,我是个超高效的技术债务制造者。 你一定不想那样。

再简单的问题,一个糟糕的程序员都能把它变复杂。——Steve Bohlen

哇,Steve是在说我吧?我早期的项目就很好验证了这句话。没有良好的实现,再简单的逻辑都能变得晦涩难懂。早期的经验让我明白,我该研究下怎么改进代码风格了。

什么是整洁的代码?

代码整洁是一种以读者为中心的开发风格,以此开发的软件易于读写和维护。开发人员总以为他们的工作在应用程序能够正常运行时就完成了。但是我们编写代码,并不只是为了给计算机用。

编码是一种和另外一个人交流你希望计算机做什么的艺术。–Nonald Knuth

保持代码整洁,首先要意识到你的读者不只是计算机,还是活生生的人!牢记这个原则,我们来讨论代码整洁之所以重要的七个简单理由。

  1. 你是个作家

想让妈妈觉得你很厉害?告诉她你是个作家!作家就是那些练习写作并以此为职业的人。开发人员每天都在写。但是作为开发人员,我们总会忘记我们写的每一行代码都会被人阅读十遍以上。这些人,就是我们的同事。他们阅读代码,忙着修复漏洞和添加新的特性。

卓越的作家以写叙述清晰、扣人心弦的故事著称于世。他们使用诸如章节、标题和段落等工具,有条理组织他们的想法,并耐心的引导读者。开发人员的工作模式也很类似,只是他们简单的使用命名空间、类和方法这些行话来讲述故事罢了。
screenshot

代码整洁的人能够聪明使用这些工具来降低复杂度,使故事变得清晰。

  1. 代码整洁是基础

近年来,专业的重构、单元测试、测试驱动的开发等软件实践备受关注。这些实践提升了代码质量和软件的可维护性。实现代码整洁的原则是一项基本技能, 它的优势会在进行重构代码或者对代码进行单元测试时显现。代码整洁的原则使得源代码高度模块化并且易于阅读和测试。如果将那些软件实践看作是房子的话,整 洁的代码则是地基。

  1. 证明你的技能

假设你正在参加一场技术面试。如果被问到代码质量,为证明你的代码质量,你能够举出专业且合理的理由吗?

或者,你会这样回答?
screenshot

如果这就是你关于代码整洁所能想到的,那可是个坏兆头。如果你从未有条有理的深入思考过代码风格的质量问题,那么你可以改进的机会估计很多。代码整 洁的人能够传授很多他们使用的具体行为、模式和技巧。但是,代码整洁毕竟不是偶然现象,它要求可行的规律的专注于清晰的表达意图。

能够被衡量的东西,都能被管理。—— Peter Drucker

建立一个整洁代码的词汇表,不仅有利于面试和提升代码质量;而且,在代码审查时,建立大家公认的代码可读性的词汇表和框架,能够促进冷静的对话。

  1. 读代码才是难事

开发人员常以能够解决难题为傲。不过相对来讲,写代码比较简单,读代码才是件难事。这就是为什么 Eric Lippert 写文章说阅读代码很难。 这也是为什么这么多的程序员宁愿重写,也不愿做阅读和理解已有的代码这种苦差事。既然看代码原本就很挑战,如果一些代码你写的时候都只能勉强理解,你会发 现过后你一点都看不懂。专业的程序员写了太多的代码,以至于只要间隔几周,就能忘记大部分的结构和设计,像以全新的视角看这个项目。过段时间看不懂自己的 代码确实是很尴尬的事。相信我,我经历过好几次。
screenshot

  1. 技术债务让人沮丧

马虎混乱的代码会给我们的项目埋下技术债务。仔细考虑情境时,技术债务也会是有用的,但是过度的技术债让人沮丧,并且会导致团队的人才流失。当简单 的事情变得复杂时,开发人员就会开始撤退去别的地方了。他们更看重工作质量带来的成就感,而不是工作数量。技术债务会降低代码重用的机会,并且处处拉低其 他代码库的质量。

  1. 你太懒惰

PERL语言的作者Larry Wall说过程序员的三大美德:懒、缺乏耐心、自大。是的,在合适的情境中,懒惰确实是积极因素。早些年,当我还在跌跌撞撞的写代码的时候,我认识到保持 代码整洁所付出的艰辛真的会得到回报。专业的开发人员努力做到正确的懒惰。这种懒惰是把更多的精力放到代码中,以至于开始时不难写,以后也不会难以重用。 代码整洁不会多花费很多时间,而且一旦你掌握这些原则,你的编码速度实际上会更快。因为精炼的、表达充分的代码最大的优点就是易于管理。

人们处于压力中时,容易偷工减料并且忽略最佳做法。然而像Bob Martin大叔在他的《代码整洁之道》中提醒我们的那样:我们没有时间不认真。长远来看,马虎草率所增加的出错次数和后期的维护代价,最终会拖延项目速度。历史经验告诉我们,后期你基本不可能有时间再去整理你的代码。所以为什么不在一开始就好好做呢?

  1. 不要成为那个动词

好吧,其他的原因都解释的站得住脚,但是这个理由最关键。大家都知道前同事的名字变成动词来描述“脏”代码的事:糟糕,这些代码是Jimmy写的。“Oh man, this code has been Jimmy’d.”

这样的评价,简直就是长远就业前景的克星啊。我们都希望未来的职位上,同事能够推荐或者录用我们不是吗?想要确保今后同事会推荐你,并且期待和你以及你的代码合作,让别人知道你的代码整洁是最好的方式。

代码整洁的原则

以下是代码整洁的三个核心原则:

  1. 选择正确的工具
  2. 优化信噪比
  3. 尽最大努力写出能够自解释的代码

Cory在PluralSight的新课程代码整洁之道:写代码给人看详细的阐述了这三个原则。如果你有兴趣提升代码质量,建立评价和编写整洁代码的词汇库,去看看吧!

关于作者

Cory House,软件架构师,独立顾问,Pluralsignht作者,INETA社区英国发展会议正式发言人。精通响应式网页设计、代码整洁之道以及臭高尔夫球技。

原文链接: Micheal Shallop 翻译: 伯乐在线 - Victoria

文章转载自 开源中国社区 [http://www.oschina.net]

相关文章
|
前端开发 测试技术 程序员
《代码整洁之道》-函数
《代码整洁之道》-函数
|
Java 程序员 测试技术
《代码整洁之道》&《程序员的职业素养》
《代码整洁之道》&《程序员的职业素养》
588 0
|
Java 程序员
代码整洁之道札记:代码为什么要整洁
代码整洁之道札记:代码为什么要整洁
319 0
|
程序员
软技能,程序员编程之外的升值之道!
程序员,除了编码之外的软技能有哪些呢?《软技能——代码之外的生存指南》33岁实现职业自由、财富自由的作者给出了解读。
6462 0
软技能,程序员编程之外的升值之道!
|
程序员 容器
代码整洁之道读后理解
###一,关于程序员的价值观 对于一个程序员来说,是应该有价值观的,然而最朴素的基本价值观,就是要写好的代码。然后,要做到这一点不容易, 对些,我针对这些价值观有自己的一些看法: (当然,在网上有关于价值观的内容一大片,各有视角,这里仅仅说说我的看法) 1,good software != quality code 2,软件开本 = 开发成本 + **维护成本** >注
1739 0
|
敏捷开发 Java 程序员
说说哪本书是对程序员最有影响、每个程序员都该阅读的书?
网上有很多关于程序员必读的书单,感觉都不是很有代表性。今天无意看到了一篇总结还算不错的书单。和园友们分享。以下书单中提到的书看过一部分,给我的感觉是经典就是经典。读过之后确实得到了很多东西,它们都潜在的影响着我。
983 0
|
测试技术 程序员 Perl
代码整洁之道—函数
在编程的早期,系统由程序和子程序组成,后来,在Fortran和PL/1的年代,系统由程序,子程序和函数组成。如今,只有函数存活下来。 函数的规则 短小 函数的第一规则是要短小,第二规则还是要更短小。

相关实验场景

更多