- 代码质量与其整洁度成正比
- 干净的代码
- 本书适用于有志于改善代码质量的程序员及技术经理
- 丹麦谚语:“小处诚实非小事。”
- 神在细节之中
- 什么是敏捷软件开发?
- TDD,测试驱动开发(Test Driven Development)
- 借喻:
(1)架构:建筑师交付毛坯房一般交付初始软件产品。
(2)Scrum:装配线式的日本骑车生产方式。 - 对于汽车工业和软件,大量的工作并不在于生产而在于维护(也就是修修补补),或避免维护。
- 1951年,一种名为“全员生产维护”(Total Poductive Maintenance)的质量保证手段在日本出来先,它关注维护甚于生产。其主要只煮之一是5S原则体系。
- 良好的软件实践遵循这些规程:专注、镇定和思考。
- 5S哲学
(1)整理sort:搞清事物之所在,合适的命名标识。
(2)整顿Seiton:(整齐),物皆有其位,而后物皆归其位。(A place for everything, and everything in its place.)
(3)清楚shine:实现代码的自我注释
(4)清洁:标准化
(5)身美:自律,在实践中贯彻规程,并时时体现于个人工作上,而且要乐于改进。 - 要关注产品的生命周期。
- 干活的四个层次:
(1)等到错误出现再去维修。
(2)更上一层楼,每天检查机械,在磨损机件停止工作之前就换掉它。
(3)一开始就打造更易维护的机械。
(4)终极实践:关注用全新机械替代旧机械。(每7年就重做一次软件的主要模块,清理缓慢陈腐的代码。) - 认真对待每个变量名,你当用为自己第一个孩子命名般的谨慎来给变量命名。
- 每首诗歌都无写完之时,得持续重写,直至放弃为止。
- 全心倾注于细节,屡见于追求卓越的行为之中。
- 他们居然通过简单地保持一致缩进风格创造了价值。
- 质量是上百万次全新投入的结果——而非仅归功于任何来自天堂的伟大方法。这些行为简单却不简陋,也不意味着简易。相反,他们是人力所能达的不仅伟大而且美丽的造物。
- “代码即设计”、“简单代码”
- 我们应当视代码为设计——作为过程而非终点的设计——这种高尚行为的漂亮表现。耦合与内聚的架构在代码中脉动。
- 无论架构还是代码都不强求完美,只求竭诚尽力而已。
- To err is human; to forgive, divine.人孰无过,神亦容之。在Scrum中,我们使一切可见。我们晾出脏衣服。我们坦承代码状态,因为它永不完美。我们日渐成为完整的人,配得起神的眷顾,也越来越接近细节中的伟大之处。
- 假使干净的地板能减少事故发生,假使归置到位的工具能提升生产力,我也会倾力左到。
- 对高瞻远瞩的练习也已结束,我要去清理自己的书桌了。
- 写整洁的代码需要遵循大量的小技巧。
- 作者阐述了在命名、函数、注释、代码格式、对象和数据结构、错误处理、边界问题、单元测试、类、系统、并发编程等方面如何做到整洁的经验和最佳实践。
- 代码感。
- 展示了Bob本人对3个Java项目的剖析与改进过程的实操记录。
- Test Obsessed(沉迷测试)
- 我做出了写出整洁代码的承诺。
- craftsmanship
- 习艺之要有二:知和行。你应当习得有关原则、模式和实践的知识,穷尽应知之事,并且要对其了如执掌,通过刻苦实践掌握它。(就像其自行车和游泳一样,唯有实践。)
- 阅读本书需要自己实践,体验自己的失败,还需要观察他人的实践与失败。
- 阅读本书需要你非常的用功,如何用功?阅读大量的代码。
然后去琢磨某端代码好在什么地方、坏在什么地方?是如何分解、和组合模块的? - 本书分为3个部分:
第一部分:介绍编写整洁代码的原则、模式和实践。
第二部分:介绍几个复杂性不断增加的安利研究
第三部分:列出上述案例研究中得到的启示和灵感。 - 我们尝试去理解自己对阅读和修改代码的反应,尽力了解为什么会有这样的感受,为什么如此行事。结果得到了一套描述在编写、阅读、清理代码时思维方式的知识库。
- 花时间琢磨那些案例,以作者的思维路径考虑问题,自行车就如同其身体延申部分一样,而不再是“感觉不错”的知识。
第一章:
1. 代码永存
- 人类模糊的感觉人类自己又是都理解不了,所以不太能产出能满足人类模糊需求和感觉的写代码机器,那得机器透彻地理解人类才行。
- 代码即规约的一种,规约永存。
2. 烂代码就像沼泽一样,我们要关注代码的整个生命周期。
3. Later equals never.(不要写个烂程序然后说,等等再修缮)
4. 花时间保持代码整洁不但有关效率,还有关生存。
5. 赶上期限的唯一方法——做得快的唯一方法——就是始终尽可能保持代码整洁。
6.优雅的代码:外表或举止上令人愉悦的优雅和美观;令人愉悦的精致和简单。(划重点:令人愉悦)
7. 破窗效应:一扇破损的窗户开辟了大厦走向倾颓的道路。
8.整洁的代码只做好一件事,糟糕的代码想做太多事,它意图混乱、目的含混。整洁的代码力求集中。每个函数、每个类和每个模块都全神贯注于一事,完全不受四周细节的干扰和污染。(人也是如此)
9.什么是整洁的代码?
①优雅高效②直截了当、干净利落的代码逻辑③减少依赖关系④整洁的代码只做好一件事(意图明确)⑤可读性高⑥可由作者之外的开发者阅读和增补⑦应有单元测试和验收测试⑧代码应在字面上表达其含义,即“字面编程”。⑨整洁的代码总是看起来像是某位特别在意它的人写的,几乎没有改进的余地。代码作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给你的代码——全心投入的某人留下的代码。
10. 不要重复代码、只做一件事、表达力、小规模抽象。
11. 我们是作者,写代码的时候记得自己是作者,要为评判你工作的读者写代码。
12. 让代码更易读:在写代码的时候,读与写的比例超过10:1。写新代码时,我们一直在读旧代码。既然比例如此之高,我们就想让读的过程变得轻松,即使那会使得编写过程更难。没可能光读不写,所以使之易读实际也使之易写。不读周边代码的化就没法写代码,编写代码的难度,取决于读周边代码的难度。
13. 军规:“让营地比你来时更干净。”
改好一个变量名、拆分一个有点过长的函数、消除一点点重复代码、清理一个嵌套if语句。
14.持续改进是专业性的内在组成部分。