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

jack_孟 jack_孟     2022-08-16     306

关键词:

  最初我喜欢这本书可能是因为非技术方面的原因,这本书中有很多我喜欢的插图。这本书的第一章的第一句话是这样说的:读这本书通常有两个原因:1. 你是一名程序员。2. 你想成为更好的程序员。我们需要更好的程序员。
  这本书的每一章都可以总结出一句话,其实每章开始的插图就是这句话的浓缩。
技术分享
  本书的第一章是关于什么是整洁代码的讨论,引用了Bjarne Stroustrup(C++之父)、Grady Booch(UML的创始人之一)等人当然也Bob大叔(本书的作者Robert Martin)自己对整洁代码的理解。顺便说一下,上面那张图上的代码应该是保龄球计分程序(不知道大家看清楚了没有,哈哈)。


技术分享
  不管是现实世界还是软件项目中,命名都是一件让人头疼的事情,给小孩起过名字的就知道,你希望把你对孩子的期望包含在这个名字中,你又希望这个名字读起来要好听,至少不至于将来成为别人的笑柄(比如庞光大、魏升京这样的名字),可能你还要考虑族谱班辈的排列等等。软件项目中的命名情况会更加复杂,简单的说命名的原则是"见名知意",当然你还需要用各种方式防范命名冲突的问题,不同的编程语言也有自己不成文的像契约一样的命名规则和方式(例如匈牙利命名法),这些可能都是需要考虑的事情。我个人并不喜欢匈牙利命名法,加上一个类型前缀的感觉就是永远和这个东西绑定到一起了,就如同用C语言的malloc函数分配内存创建一个能放100000个元素的数组,你愿意用下面哪种写法呢?记住:好的名字相当于为代码写了一段有用的注释。

    int* myArray = NULL;
    /* 写法1 */
    myArray = malloc(100000 * sizeof(int));
    /* 写法2 */
    myArray = malloc(100000 * sizeof *myArray);


技术分享
  第三章讲的是函数,说了这么一句话:"Function should do one thing. They should do it well. They should do it only. "(函数只应该做一件事情,把一件事情做好,而且只由它来做这一件事情),听起来很简单的一句话但是要践行这条原则却并不容易,所以我们的代码中才会有很多的坏味道(请参考《重构:改善既有代码的设计》一书的第三章)。事实上,上升一个层次,我们在设计类的时候也应该如此,这是面向对象设计原则中说的单一职责原则(SRP),当我们的代码中出现了冗长的方法或者巨大的类的时候,我们就应该依据职责来对其进行拆分,这样程序的结构才会趋于合理,最终达到"高内聚"的目标。当然,这一章里面还提到很多理念,包括:Command Query Separation(一个方法要么执行某种命令,要么返回查询数据)、DRY(不要重复自己)、Prefer Exceptions to Returning Error Codes(异常优于返回错误码)等。


技术分享
  第四章讲的是注释,有一句话我很喜欢,说的是:"Comments Do Not Make Up for Bad Code."(注释不是对劣质代码的补救)。事实上好的代码即便没有注释也拥有良好的可读性,但恰当的注释会让代码变得更可读、可维护性更高。


技术分享
  第五章讲的是代码风格。现代IDE(集成开发环境)几乎都有代码格式化代码的功能,你只需要设置好你使用的代码风格就可以了,其实不只是IDE,很多高级的文本编辑工具也能够按照指定的风格格式化你的代码。用什么样的代码风格不是关键,关键是整个项目组的成员应当使用相同的代码风格,让多个人编写的代码看起来像一个人书写的。我个在代码中使用的括号风格是1TBS(One True Bracing Style,也叫做K&R风格,这种风格是Kernighan和Ritchie两位老师在"The C Programming Language"一书中使用的代码风格),当然Allman风格(FreeBSD系统的作者之一使用的代码风格)也是很好的选择。


技术分享
  第六章讨论的是对象和数据结构,读完之后的感觉是虽然我们天天都嚷着吼着要面向对象编程,但是很多时候我们都使用了类的退化结构,包括我们开发时经常使用的失血模型和贫血模型(事务脚本模式)都和面向对象的设计理念相违背。我得承认在读这一章的时候我可能没有抓住作者的观点。


 

技术分享
  第七章对错误处理(异常)的讲解非常精彩的,整洁的代码中对错误的处理应当是被分离的关注点(不要跟正常的业务逻辑混杂在一起),而面向对象中的异常机制就是一种在不打乱原有业务逻辑的前提下处理掉程序在运行时发生的不正常状况的手段。这章有两个观点我特别欣赏,一是"Use Unchecked Exceptions"(非受检异常允许你在适当的地方处理异常,而适当的地方就是异常影响代码执行逻辑的地方,不管做哪种类型的应用,都应该尽可能向用户隐藏异常的发生,除非发生了不可挽救的状况,这才是符合最小惊讶原则的设计);二是"Don’t Return Null"(如果一个方法在出状况的时候返回null,那么调用者都要通过频繁的检查返回值来判定是否出错,一旦忘了这件事情就有可能出错,既然null是一种异常状况,那么用抛出异常的方式来代替返回null明显是更好的做法)。


技术分享
  第八章的内容对实际开发有重要的指导意义,因为我们的项目中不可避免的要使用第三方工具,因此我们需要将这些东西整洁的纳入到我们的系统中,这时就需要考虑系统边界的问题。有的时候我们会千辛万苦的发现系统中的一些bug是来源于第三方工具的,当然我们基本上没有时间去重头学习和研究第三方工具或者自己写代码来实现第三方工具的功能,但是我们至少应该先对第三方工具进行测试。我在以前的项目中,即使用Apache提供的那些著名的第三方工具,我的做法也是先写测试代码对这些工具的可用性和有效性进行证实,当然有的时候可能是过于谨慎了,但这种习惯和做法本身是很好的。在这种场景下,适配器模式是非常好的设计,它不仅能将不兼容的接口改写成兼容的接口,还能够对通过对第三方工具重新封装来避免边界的变化对系统的影响。


技术分享
  第九章的内容是单元测试。Bob大叔是TDD(测试驱动开发)的倡导者,这一章讲的是如何编写整洁的测试,Bob大叔的答案是FIRST规则(Fast、Independent、Repeatable、Self-Validating、Timely)。


技术分享
  第十章介绍类的设计,最重要的还是SRP(单一职责原则)。


技术分享
  第十一章是关于系统设计的内容,开篇引用了微软首席技术官Ray Ozzie的一句话:"Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test."(复杂要人命,它消磨开发者的生命,让产品难于规划、构建和测试)。这章对于希望了解面向切面编程的开发者是极好的,包括了对依赖注入、代理模式以及AOP的探讨。


技术分享
  第十二章探讨了系统的迭代式演进。


技术分享
  第十三章对并发编程的讨论非常经常,很多开发者都畏惧并发编程,也有的开发者迷信多线程可以解决所有的并发问题,如果你是这两类人之一,本章会教给你真正的并发编程。这一章的内容我重新整理了一篇文章,已经发布在CSDN的博客上,名为《关于Java并发编程的总结和思考》


技术分享
  第十四章是一个精彩的案例用来讲解对代码的持续改进,你可以自己好好阅读一次。第十五章到第十七章说的都是重构,相当精彩。如果你还没有来得及读《重构:改善既有代码的设计》一书,你可以先读读这几张中探讨的代码的坏味道及其改进方案。


  总之,这本书从引言到附录都无比精彩,书中的代码是用Java语言书写的,赶紧去阅读吧。

 

出处:http://blog.csdn.net/jackfrued/article/details/44980689

推荐下载地址:

http://download.csdn.net/detail/songya1007/4828046

http://www.jb51.net/books/34882.html

 

第九次读书笔记——读《代码整洁之道》有感

第九次读书笔记——读《代码整洁之道》有感“相对于任何宏伟景愿,对细节的关注甚至是更为关键的专业的基础。首先,开发者通过小型实践获得可用于大型实践的技能和信用度。其次,宏伟建筑中最细小的部分,比如关不紧... 查看详情

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

...这句话的浓缩。  本书的第一章是关于什么是整洁代码的讨论,引用了Bjarne 查看详情

第五次读书笔记——robrtc.martin的《代码整洁之道》

 本周我读的书是美国作者RobrtC.Martin的《代码整洁之道》。一周的时间,我主要阅读了本书的前五章,关于整洁代码、有意义的命名、函数、注释以及格式等内容。书中作者有个观点:优雅和高效。作者说:代码逻辑应当直... 查看详情

代码整洁之道读书笔记(ch4-ch7)(代码片段)

...象与数据结构的规范以及错误处理四个方面介绍了如何使代码变得简洁易懂。不同于上次摘抄的方法,这一次我会结合第一次个人作业的代码进行分析。第四章 注释这一章告诉我们,好的注释要满足以下三点要求:尽量避免... 查看详情

代码整洁之道读书笔记

代码整洁之道TableofContents1.原则1.1.单一权责1.1.1.一个类应该完成一个类型的任务1.1.2.內聚性要高,即每个函数使用类变量的多少1.2.开放封闭原则1.2.1.对内封闭对外开放2.军规2.1.只做好一件事2.2.短小精悍2.3.代码不要重复2.4.开... 查看详情

代码整洁之道读书笔记

代码整洁之道TableofContents1.原则1.1.单一权责1.1.1.一个类应该完成一个类型的任务1.1.2.內聚性要高,即每个函数使用类变量的多少1.2.开放封闭原则1.2.1.对内封闭对外开放2.军规2.1.只做好一件事2.2.短小精悍2.3.代码不要重复2.4.开... 查看详情

读书笔记3.29

本周大致翻看了一下《代码整洁之道》,着实学到了一些东西。在第一章里,BjarneStroustrup(C++发明者)便阐明了整洁的代码所蕴含的意义,他说:“我喜欢优雅和高效的代码,代码逻辑应当直接了当,叫缺陷难以隐藏;尽量减... 查看详情

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

...状态,还是只对过程进行阐述,不下结论,《代码整洁之道》书中的观点亦是如此。一、感悟说实话这本书读起来没有太多的让我惊喜的时刻,一方面可能是因为和《重构》有重叠,导致很多东西都比较熟悉&#... 查看详情

[阅读笔记]代码整洁之道

第一章: 1.混乱的代码难以维护,导致生产力越来越低。糟糕的代码引发混乱,越改越烂。2.整洁的代码:优雅,高效,少依赖,性能优,命名规范,清晰尽量少的api3.破窗理论:窗户破损的建筑让人觉得无人照管,于是别人... 查看详情

架构整洁之道,看这一篇就够了!(代码片段)

阿里妹导读:程序的世界飞速发展,今天所掌握的技能可能明年就过时了,但有些知识历久弥新,掌握了它们,你在程序的海洋中就不会迷路,架构思想就是这样的知识。本文是《架构整洁之道》的读书心得,作者将书中内容拆... 查看详情

c#代码整洁之道读后总结与感想

1. 基本信息C#代码整洁之道:代码重构与性能提升 ,英文名为CleanCodeinC#。作者:[英]詹森·奥尔斯(JasonAlls)著,刘夏译机械工业出版社,2022年4月出版。1.1. 读薄率书籍总字数489000字,笔记总字数8927字。读薄率8927÷48... 查看详情

读书·架构整洁之道(原则篇)

...信公众号“江湖喵的修炼秘籍”近日在读Bob大叔的《架构整洁之道》,全书大体上可以分为两部分,前半部分讲设计原则,后半部分讲软件架构,这篇文章是对前半部分的一些观点的整理和思考。 查看详情

读书·架构整洁之道(原则篇)

...信公众号“江湖喵的修炼秘籍”近日在读Bob大叔的《架构整洁之道》,全书大体上可以分为两部分,前半部分讲设计原则,后半部分讲软件架构,这篇文章是对前半部分的一些观点的整理和思考。 查看详情

整洁架构之道--三种经典的编程范式(代码片段)

本文是《CleanArchitecture》--整洁架构之道中关于编程范式相关章节的笔记,首发于公众号「Go招聘」这和软件架构的三大关注重点不谋而合:功能性、组件独立性以及数据管理。的方式。回答此问题的同时另外还会搬出这三个词语... 查看详情

《程序员修炼之道》读书笔记(下)

...比如说从我的第一次个人作业中,我对书中提到的曳光弹代码就有了很深的感触:根据书中给出的例子,我对“曳光弹”的理解是MVP,最小可用产品。甚至是比MVP更简单,进一步最小化的,一段核心算法,一个可操作的简 查看详情

《代码整洁之道》

代码整洁之道代码猴子(CodeMonkey):低水平编码者.童子军规.技艺(craftsmanship):知和行.学写整洁代码,掌握原则和模式,并付出行动.整洁代码代码呈现了需求的细节.这些细节无法被忽略或抽象,必须要严谨,精确,规范和详细.糟糕的代码... 查看详情

《python黑帽子:黑客与渗透测试编程之道》读书笔记:web攻击(代码片段)

目录前言1、urllib22、开源web应用安装3、破解目录和文件位置4、破解HTML表格认证结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了&#... 查看详情

《python黑帽子:黑客与渗透测试编程之道》读书笔记:自动化攻击取证(代码片段)

目录前言1、Volatility配置2、抓取口令的哈希值3、直接代码注入4、插入shellcode结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了࿰... 查看详情