《代码整洁之道 clean code》读书笔记

博客原文

《代码整洁之道 clean code》这本书已经关注很久,最近极其有欲望读一下她。主要是因为个人正儿八经写代码也有三年左右了,自己总结了一些代码规范和关于代码质量的理解,但是不能很好的说服团队严格遵守,于是乎想寻求正统的代码整洁之道,以提高代码质量。写文章只是想把书读薄,有摘抄也有感想。今天先记录第一篇,开始~

《代码整洁之道 clean code》读书笔记_第1张图片
clean code.jpg

1 核心观念

代码质量与其整洁度成正比,个人非常认同,在工作中也有很痛的领悟。在本书的序中提到,软件开发工作中有百分之八十的时间是在对项目进行维护(修修补补),也就是说你写过的代码,会被反复的查看和修改(你自己或者他人)。因此代码的可读性和易修改性(不能牵一发而动全身)很重要。

在汽车行业有5S原则,这是一套精益求精的规程:专注、镇定和思考,并非只关心实际作业,还要推动整个项目的快速高效运转。5S哲学包括以下概念:

  • 整理(或谓组织,sort-分类排序),搞清楚事物之所在很重要,比如通过恰当的命名之类的手段。
  • 整顿(或谓整齐,systematize-系统化),物皆有其位,而后物尽归其位(A place for everything, and everything in its place.)。每段代码都该在你希望它所在的地方。
  • 清洁(或谓shine-锃亮),对于那种四处遗弃的带注释的代码,以及反映过往或期望的无注释代码,应除之而后快。
  • 标准化,一个项目组内应该使用一贯的代码风格和实践手段。
  • 身美(或谓自律),在实践中贯彻规程,并时时体现于个人工作上,而且要乐于改进。

接受挑战吧~~

Cleanliness is next to godliness(整洁近乎虔诚)

He who is faithful in little is faithful in much(守小节者不亏大节)

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

The early bird catches the worm(早起的鸟儿有虫吃)

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 the doctor away(一天一个苹果,医生远离我)
以上这些警句不管在东方还是西方都一定的影响,可以深思一下。

2 写糟糕代码的理由与代价

在写代码的时候,心里总是有两个“我”在争斗,是写得更完美一点呢?还是赶紧完成它,还有很多工作等着要做呢?这是每个程序员都遇到过的困境,在面对这个困扰的时候,你做出了什么样的选择?你自己心里清楚,扪心自问一下,舒服吗?

当我 review 别人的代码时,我也问过他们,他们也承认自己写的时糟糕的代码,却总是说项目时间紧,赶时间,等有时间了再整理一下。这么回答就是没有认识到糟糕代码的危害力有多大,你现在节省的时间,会在你修改测试bug(甚至生产bug)的时候付出双倍的时间。

还有就是你的代码一旦测试通过,就很少再动你的那些代码,即使你有时间,即使你想整理代码,也不敢,怕出新的bug。

或许有一天你回头看看曾经写过的代码,自己都嫌弃。老板说在上面添加一个新功能,你来做吧,偷偷瞟一眼自己亲手造成的混乱,决定弃之不顾,努力去说服老板,咱们重新来过吧。你觉着老板心里会怎么想,这耗费的时间完全不是添加一个功能的时间,这得付出多大的代价。

大家必须要认识到这么一个勒布朗(LeBlanc)法则:稍后等于永不(Later equals never)。

有一定经验的开发者都知道,你顶着期限的压力,制造了混乱的代码,然后混乱的代码又拖住了你的后腿,接着就是你错过了期限。赶上期限的唯一方法就是始终尽可能的保持代码整洁。

或许我们理由还有更多,比如需求变化背离了初期的设计,进度太紧张,没法好好干活,心里还骂那些愚蠢的经理、苛刻的用户、没用的营销方式。回头想想,是不是自作自受,不够专业?

3 什么是整洁代码

代码作品就像艺术品一样,有不同的流派,在大师的眼里,对于优美与漂亮有不同的理解。关于什么是整洁代码书中讲述很多大师的观点,各个侧重点不同,总结一下:

  1. 有意义的命名,代码应通过其字面表达含义;
  2. 没有重复代码;
  3. 全面覆盖的单元测试;
  4. 提供清晰、尽量少的API;
  5. 完美的错误处理代码,不要忽略细节;
  6. 性能调至最优,省得引诱别人做没规矩的优化;
  7. 尽量少的依赖关系,便于维护;
  8. 尽量少的实体,比如类、方法、函数等;
  9. 整洁的代码(类/函数/模块)只做好一件事;
  10. 整洁的代码看起来专为解决那个问题而存在;
  11. 整洁的代码简单直接,从不隐藏设计者的意图;
  12. 整洁的代码看起来像是某位特别在意她的人写的,没有改进的余地;
  13. 整洁的代码浅显易懂,绝不故作高深;

通过一些“编辑器回放”工具统计发现,在写代码的时候,阅读其他模块代码的时间是你写代码所花费的时间的10倍,我们一直在阅读旧代码。在大部分情况下,我们不读周边的代码就没法写代码。编写代码的难度,取决于阅读周边代码的难度。因此,我们在编写代码的时候付出更多努力,使写出的代码阅读起来很轻松,是非常值得的。

整洁代码如同优美的散文,读起来令人身心愉悦,深合己意。

最后来一条美国童子军军规,非常符合我们的专业领域:让营地比你来时更干净

你可能感兴趣的:(《代码整洁之道 clean code》读书笔记)