工作后在写服务时发现总是不知道什么样的代码是好代码,导致开发效率变低,所以看了下代码整洁之道,希望能获得些开发原则,提升自己的开发效率,本文摘取了文章部分内容,没有全部看完,本着按需学习的原则进行了学习和理解。
文章目录如下,选取了其中第3、7、8、10、11章,做了些笔记
第3章 函数
-
短小
-
每个函数负责一个抽象层级的功能
-
比如一个函数中最好不要出现抽象后的函数,同时还有和字符串,db直接交互的代码片段,这样这样的后果是该函数同时出现抽象度高和低的代码,很难理解
-
-
自顶向下的阅读顺序,函数按照引用顺序从上往下分布(如函数一,引用了函数二、三,函数一下紧跟函数二,接着是函数三)
-
对于switch语句,如果出现的次数很多,可以用抽象工厂的方式,创建多态对象,对于一些可共同抽象的功能,可以借由接口的方式来供不同对象实现和调用
-
关于参数
-
如果函数入参是三个及以上,说明可能需要一个封装类来包含参数
eg:
-
参数列表,如果入参的数量可能有变化,采用可变参数列表实现
-
-
使用异常返回替代错误码
第7章 错误处理
-
可控异常,即在函数命名处定义可能抛出的异常,然后进行检查判断抛出异常类型是否属于该异常。可能会带来一个缺点:底层的异常类型变化会导致所有引用该底层代码 且 没有处理异常的方法命名都需要改变,这会导致封装性被破坏。
-
尽量减少null值的产生和传递
-
特例模式:对于可能会返回null的情况,不如抛出异常 或 返回特例对象
第8章 边界
用来指导当出现第三方调用时如何进行代码设计。
-
我们设计第三方给别人使用时,若不想用户关注泛型(如map,list等集合),而是在使用类中进行类型转换
-
使用别人开发的第三方接口,如何处理
-
根据自己的业务需要预定义第三方接口及其实现方法,然后用adapter进行类型转换,进行自己接口和第三方接口的交互(转换)
-
第10章 类
-
对于想被测试类访问到的变量,可以用protected修饰
-
单一权责:类应该只有一条修改的理由
-
内聚:类的内聚指的是类中的变量被每个方法使用的程序(若每个变量都被每个方法使用,则这个类的内聚性是最高的)
-
应尽量使类的内聚性更高,当类中出现了只有被少量方法使用的变量时,可以考虑将这些变量抽象到一个新的类
eg:如果一个类由于新增方法要修改该类,对该类的功能做修改也要修改该类,则该类违反了SRP(权责单一)原则
如何做到呢,可以将该类抽象为一个父类,将抽象前类中的方法放到不同子类实现,用公共类(或接口)实现共有的方法
-
第11章 系统
-
延迟初始化
-
DTO(只关注数据传输的对象,无行为)
-
aop切面中的横切式关注面概念
-
横切式关注面指哪些横跨多个对象和或类,不能被单一的类管理,如日志记录、事务检查、缓存等
-
如何处理横切式关注面,将横切式关注面抽离出来,形成切面,再将切面织入到各个环节
-