整洁代码系列

Posted 神一样的孩子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整洁代码系列相关的知识,希望对你有一定的参考价值。

1、首先我们必须要了解糟糕的代码会导致什么问题?

  • 越糟糕的代码,别人理解的时间就越长,会导致进度严重滞后(代码不仅仅是写给自己看的,除了自己,团队的其他成员也需要在必要的时候去理解);
  • 越糟糕的代码,每次添加或修改代码,如果再不改变糟糕行为的前提下,代码回越来越烂,再也无法理清,最后会束手无策;
  • 随着混乱的增加,团队的生产力会持续的下降,最后趋向于零。
  • 当生产力下降时,管理层只会做一件事,就是增加更多的人手到项目中,期望提升生产力,可是新人并不熟悉系统的设计,但却背负着提升生产力的可怕压力,于是,有可能会知道出更多的混乱。

2、那什么是整洁的代码呢?是否有一定的标准呢?

这个是没有的,每个人都有自己整洁代码的标准呢,我们不妨可以来看看一些非常知名且经验丰富的程序员是怎么说的?

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

  (每个函数,每个类和每个模块都全神贯注于一件事,完全不受四周细节的干扰和污染)。

(2)整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句。--Grady Booch,Object Oriented Analysis and Design with Applications(中译版《面向对象分析与设计》)一书作者。

     (代码应当讲述事实,不引人猜测,它只该包含必需之物。读者应当感受到我们的果断决绝)。

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

  (增补一词,说明了整洁的代码要具有可扩展性;目前而言,测试驱动开发已经在行业中有深远影响,没有测试的代码是不干净的,不管它有多优雅、多可读、多易于理解,微于测试,其不洁亦可知道)。

(4)简单代码,依其重要顺序:

    能通过所有测试;

      没有重复代码

      体现系统中的全部设计理念;

      包括尽量少的实体,比如类、方法、函数等。

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

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

  (5)如果每个例程都让你感到深合己意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。--Ward Cunningham,Wiki发明者,eXtreme Programming(极限编程)的创始人之一,Smalltalk语言和面向对象的思想领袖。所有在意代码者的教父。

      (你可以想想最近一次看到深合己意的模块是什么时候,其实整洁的程序好到你根本不会注意到它,设计者把它做得像一切其他设计般简单)。

3、童子军军规

  美国的童子军有一条简单的军规,就是“让营地比你来时更干净”,这完全可以应用到我们的专业领域:代码每次签入时,都要比签出时干净才行,这样子代码就不会腐坏,如果不能时时刻刻的保持代码整洁,随着时间的流逝,代码必将腐坏,因为不好的代码会“代代相传”(传说中的破窗效应)。

以上是关于整洁代码系列的主要内容,如果未能解决你的问题,请参考以下文章

《代码整洁之道》精读与演绎之五 整洁类的书写准则

C#中使用面向切面编程(AOP)中实践代码整洁

代码整洁之道- 函数

代码整洁之道- 函数

《代码整洁之道》精读与演绎之四 优秀代码的格式准则

整洁之道如何写出更整洁的代码(上)