作者:给立乐*
出处:http://spencer-dev.com/2016/09/03/Clean Code - Chapter 1 整洁代码
声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。
烂代码、脏代码会引起怎样的状况?
会使工作效率严重降低!
本来数小时就能够解决的问题,却花了数个星期解决。
只想修改一行代码解决某问题,但却发现涉及数十上百各模块。
糟糕的代码引发混乱!别人修改糟糕的代码时,往往会越改越烂,就像『破窗理论』。
什么是整洁代码?
C++ 语言的发明者 Bjarne Stroustrup 说:
- 优雅和高效的代码;
- 代码逻辑直截了当,叫缺陷难以隐藏;
- 尽量减少依赖关系,使之便于维护;
- 依据某种分层战略完善错误处理代码;
- 性能调至最优;
- 整洁的代码只做好一件事;
OTI 公司创始人 Dave Thomas 说:
- 整洁的代码应该由作者之外的开发者阅读和增补;
- 它应当有单元测试和验收测试;
- 它使用有意义的命名;
- 它只提供一种而非多种做一件事的途径;
- 它只有尽量少的依赖关系,而且要明确的定义和提供清晰的 API;
- 代码应通过其字面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表述;
- 应当使方法块尽量小;
- 应当用人类可读的方式来写代码;
Extreme Programming Installed(中译版《极限编程实施》)以及 Extreme Programming Adventures in C#(中译版《C# 极限编程探险》)的作者 Ron Jeffries 说:
- 能通过所有测试;
- 没有重复代码;
- 体现系统中的全部设计理念;
- 包含尽量少的实体,比如类、方法、函数等;
他们是怎样做的?
Ron Jeffries 说:
如果同一段代码反复出现,就表示某种想法未在代码中得到良好的体现。我尽力去找出那到底是什么,然后再尽力的用更清晰的方式表达出来。
减少重复代码,提高表达力,提早构建简单抽象。
表达力还不止体现在命名上。我也会检查对象或方法是否想做的事情太多了。如果对象功能太多,最好是切分为两个或多个对象。如果方法功能太多,我总是使用抽取手段(Extract Method)重构之,从而得到一个较为清晰的说明自身功能的方法,以及另外数个说明如何实现这些功能的方法。
最后
光把代码写好可不够。必须时时保持代码整洁。我们都见过代码随时间流逝而腐坏。我们应当更积极地阻止腐坏的发生。