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

博客原文

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

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倍,我们一直在阅读旧代码。在大部分情况下,我们不读周边的代码就没法写代码。编写代码的难度,取决于阅读周边代码的难度。因此,我们在编写代码的时候付出更多努力,使写出的代码阅读起来很轻松,是非常值得的。

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容