Administrator
发布于 2022-04-01 / 1127 阅读 / 0 评论 / 0 点赞

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

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

我从第一次开始写代码的时候,就总是有一种强迫症,总是想写出在当时的认知范围内,最优雅的代码,或者也可以说最合适的代码。所以在进一步的说,就是最整洁的代码了。

就像这本书的名字一样,见书名即知道书的内容。所以,优秀的整洁的代码是自带解释的,甚至不用注释,就能见字如意,能够大概的明白这部分代码是做什么用的,要实现什么样的功能。所以,我认为,整洁要达到的目标,就是要让人能读懂。

引用一个说法:低级程序员的代码只有机器能看懂,中级程序员的代码人能看懂,高级程序员用业务语言写代码,也就是所说的DDD领域驱动设计。

我们目前也是一直在做的一件事情,就是codeReview(尽管目前做的还不够好)

以下,就先简单的聊一下,读这个书以后的一些感受和心得。(这本书需要多读几次,多第一遍没有太大的感觉)

  • 对于有意义的命名,什么是好的命名

    • 需要名副其实,一眼望过去,得知道什么意思,好的命名是不需要注释来补充的。
    • 需要做好有意义的区分,比如获取用户和获取用户信息是两个事情(返回的内容数量不一样)
    • 需要有读得出来的名称,千万千万千万要避免用自造词,比如中英文混搭
    • 需要使用可搜索的名称,名称长短应与其作用域大小相对应。
    • 避免映射思维,不能让读代码的人在脑海中将定义的名称翻译成他们熟知的名称
    • 类名(对象也是类):不应该是动词,应该是名词或者名词短语
    • 方法名:应该是动词或者动词短语
    • 取名字,要言简意赅,且是大家容易理解的命名
    • 每个概念应该对应一个词,独一无二,比如get,retrieve
    • 不要用双关语,避免歧义,比如add和append
    • 不要添加无意义的语境
  • 对于函数,什么是好的函数

    • 要短小,代码内容20行封顶最好,缩进层级不该多于一层或两层,且如果存在if else while,则相应代码块应该只有一行(多就抽出方法)
    • 要只做一件事,单一职责。
    • 函数中要在同一个抽象层级上,自顶向下读代码
    • Switch语句,使用工厂模式替代
    • 使用描述行的名称,函数越短小,职责越单一,就越方便取个好的名字,不过命名方式要保持一致
    • 函数参数,任何时候都不要使用3个以上的参数,如果多了,就封装成类(抱歉,最近写的代码参数还有六七的,下次一定),且不要传递Boolean值来做代码判断,这样就会变成一个函数执行多件事情了。
    • 不要重复自己,消除重复,做好封装
  • 注释-什么是好的注释

    • 有法律或版权或著作权信息
    • 提供信息的注释,帮助理解代码信息
    • 对意图的解释,解释接下来的代码是干嘛的
    • 阐释,解释难懂的代码
    • 警示,用于警告其他程序员
    • TODO注释,记录待做的事情,定期查看及清理
  • 注释-什么是坏的注释

    • 自言自语,说一些别人听不懂的话
    • 多余的注释是没有必要的,有些通过代码一眼就能看出来是啥的,不用写注释
    • 很多日志类的注释都可以用git来管理
    • 类的封装,应该自顶向下,善于保护(protected)成员。公共静态变量、私有静态变量、私有实体变量、公共变量、公共函数。
    • 类应该短小,单一权责原则(SRP),且内聚,应该有多个短小的类,而不是少量而大的类

这本书还需要再多读几次,才能完美应用其精髓,且需要和设计模式等书一起读,这样才能让我的代码能力越来越好,才能写出更好的代码,不被后人喷的代码~~~

加油!


评论