Clean Code 学习笔记

第二章 有意义的命名

变量和常量的命名要名副其实,明确表达意思,使单独读这一个模块或者方法块的时候能够快速的理解到这区域是做什么用途的。

避免使用误导性较强的命名,将差异性体现出来。

体现出有意义的区分,要以读者的角度去做有意义的命名来进行区分。

使用可以读出来的命名。

使用便于搜索的名称。避免使用编码

消除成员前缀的需要。

尽量避免思维映射,将明确贯彻到底。

类名和对象名应该是名词或者名词短语,方法名为动词或动词短语。

每个概念对应一个词,避免使用双关语,多取技术性的名称,使用技术所涉及领域的名称

添加有意义的语境,避免没意义的语境

第三章 函数

函数的长度应该短小,每个函数都一目了然,每个函数都只干一件事。函数里面不应该容纳嵌套结构。

函数应该做一件事,做好这件事,只做这件事,只做一件事的函数是无法被合理切分为多个区段。

一个函数不要混杂多个抽象层级,确保语句都处在同一抽象层级上

swich语句很难做到只干一件事,而且我们往往无法避开switch语句,利用多态可以确保每个switch语句都埋藏在较低的抽象层级且永远不会重复。看下列代码

 该函数有以下几个问题:太长,出现新的雇员类型时会更长,做了不止一件事,违反了单一权责原则,违反了开放闭合原则,最麻烦的地方在于到处都有类似结构的函数。

将switch语句埋到抽象工厂底下,不许任何人看到,使用switch语句为Employee的派生物创建合适的实体,藉由Employee接口多态的接受派遣。按以上规则改动后代码如以下:

 尽量使用描述性的名称,命名的方式也要保持一致,使用与模块名一脉的短语,名词和动词来为函数命名。

最理想的参数数量是零,尽量在没有特殊理由时使用三个以上的参数。参数如果过多,测试覆盖的可能值组合就太多了,只有一个输入参数也是一个不错的选择。

避免使用表示参数,如果必须对函数重构,可以把函数一份为二。

两个参数的函数要比一元函数难懂,针对于特殊情况下两个参数也比较合心意,尽量使用一些机制将其转换成一元函数,将多余方法写道一个类的成员之一,也可以将参数写成当前类的成员变量,还可以分离出新类。

如果函数需要三个以上的参数,那么就要考虑将合适的参数封装成一个类。

函数最好保证无副作用,不要使函数调用后造出类似时序性耦合的现象,避免使用输出函数。如果函数必须要修改某种状态,就修改所属对象状态吧!

使用异常替代返回错误码,错误处理代码就能够从主路径代码中分离使其更加简化。(类似下面代码)

将try catch的主体部分抽离成一个函数,让其显得不那么混乱。

try如果在某个函数中出现那么它就应该是函数的开始且在catch和finally后面也不应出现内容。

使用异常代替错误码,新的异常可以从异常类派生出来无需编译和重新部署。

消灭重复,在代码的编写中一个算法可能在很多个函数中复用修改时也要修改很多次,避免重复的出现,提高效率。

好的代码是通过一直的测试重写而生成的。

第四章 注释

不准确的注释要比没注释坏的多,只有代码能够忠实的告诉你所有事。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值