代码整洁之道--语句摘录

警句

Cleanliness is next to godliness.
整洁近乎虔诚

He who is faithful in little is faithfull in much.
守小节者不污大节

A stitch in time saves nine.
及时一针省九针

The early bird catches the wrom.
早期的鸟儿有虫吃

Don't put off until tomorrow what you can do today.
日事日毕

Mighty oaks from little acorns grow.
巨木生于树籽

An ounce of prevention is worth a pound of cure.
防病好于治病

An apple a day keeps tthe doctor away.
一天一苹果,医生远离我

To err is human; to forgive, divine
忍孰无过,神亦容之

整洁:

命名、函数、注释、代码格式、对象、数据结构、错误处理、边界问题、单元测试、类、系统、并发编程

The only valid measuarement of code quality: WTF/minute
衡量代码质量的唯一有效标准:WTF/min


什么是整洁代码

  • 勒布朗(LeBlanc)法则:

    稍后等于永不(Later equals never)

  • Bjarne Stroustrup, C++ 语言发明者, C++ programming Language 作者

    我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码制作好一件事。

  • 破窗原理

    窗户破损了的建筑让人觉得似乎无人照管。于是别人也再不关心。他们放任窗户继续破损。最终自己 也参加破坏活动,在外墙上涂鸦,任垃圾堆积。一扇破损的窗户开辟了大厦走向倾颠的道路。

  • Grady Booch, Object Oriented Analysis and Design with Application(《面向对象分析与设计》) 作者

    整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了 干净利落的抽象(crisp abstraction) 和直截了当的控制语句。

  • “老大” Dave Thomas, OTI 公司创始人, Eclipse 战略之父

    整洁的代码应可由作者之外的开发者阅读和增补。它应具有单元测试和验收测试,它适用有意义的命名,它只提供一种而非多种做一件事的途径。它只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的 API。代码应通过其表面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表达。

  • Michael Feathers, Working Effectively with Legacy Code(《修改代码的艺术》) 作者

    我可以列出我留意到的整洁代码的所有特点,但其中有一条的根本性的。整洁的代码总是看起来像是某位特别在意它的人写的。几乎没有改进的余地。代码作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给你的代码 -- 全心投入的某人留下的代码。

  • Ron Jeffries, Extreme Programming Installed(《极限编程实施》) 以及 Extreme Programming Adventures in C#(《C#极限编程探险》) 作者

    近年来,我开始研究贝克的简单代码规则,差不多也都琢磨透了。简单代码,依其重要顺序:

    • 能通过所有测试
    • 没有重复代码
    • 体现系统中的全部设计理念
    • 包括尽量少的尸体,比如类、方法、函数等

    在以上诸项中,我最在意代码重复。如果某一段代码反复出现,就表示某种想法未在代码中得到良好的体现。我尽力去找到底哪是什么,然后再尽力更清晰地表达出来。

    在我看来,有意义的命名是体现表达力的一种方式,我往往会修改好几次才会定下名字来。借助 Eclipse 这样的现代编码工具,重命名代价极低,所以我无所顾忌。然而,表达力还不只体现在命名上。我也会检查对象或方法是否想做的事太多。如果对象功能太多,最好是切分为两个或多个对象。如果方法功能太多,我总是适用抽取手段(Extract Method)重构之,从而能够得到一个能较为清晰地说明自身功能的方法,以及另外数个说明如何实现这些功能的方法。

    消除重复和提高表达能力让我在整洁代码方面获益良多,只要铭记这两点,改进脏代码时就会大有不同。不过,我时常关注的另一个规则就不太好解释了。

    这么多年下来,我发现所有程序都由极为相似的元素构成。例如,“在集合中查找某物”。不管时雇员记录数据库还是 名-值对 哈希表,或者某类条目的数组,我们都会发现自己想要从集合中找到某一特定条目。一旦出现这种情况,我通常会把实现手段封装到抽象的方法或类中。这样做好处多多。

    可以先用某种简单的手段,比如哈希表来实现这一功能,由于对搜索的引用指向了我那个小小的抽象,就能随需应变,修改实现手段。这样就能既快速前进,又能为未来的修改余留余地。

    另外,该集合抽象常常提醒我留意“真正”在发生的事,避免随意实现集合行为,因为我真正需要的不过是某种简单的查找手段。

    减少重复代码,提高表达能力,提早构建简单抽象。这就是我写整洁代码的方法。

  • Ward Cunningham, Wiki 发明者, Exterme Programming(极限编程)创始人之一, Smalltalk 语言和面向对象的思想领袖。所有在意代码者的教父。

    如果每个例程都让你感到深合己意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。

  • 童子军军规

    让营地比你来时更干净


--- 上述文本摘自 [代码整洁之道].(美)马丁
posted @ 2017-03-26 20:54  呆呆的独行者  阅读(496)  评论(0编辑  收藏  举报