整理第三章的内容,关于代码的坏味道,这些往往也是可以进行重构的信号。
1. 重复代码。这个是非常常见的代码结构问题,这样的代码问题也很明显:难以维护,重复代码意味着当一份代码改动时,另一份也必须做出相应的改动,否则就会出现不一致的问题。这种情况应该提取共同代码。
2. 过长函数。函数过长意味着函数很复杂,处理了好多内容,违背单一职责,同时,程序愈长愈时难以理解,也很难为其起一个合适的可以表其意的名字。常见的应对方法时按功能将函数拆分。
3. 过大的类。过大的类,其承担的职责也就越多,意味着使用它的地方越多,难么就会有很多的与该类相关的代码(实例变量等等),又会带来重复代码的问题,需要做的是将该类拆分提取。
4. 过长参数列表。这样的问题也很明显,函数调用端很容易出问题,因为参数过多,使用起来很容易出错,拆分函数或者传递一个完整对象(如果多个参数来自于同一个对象)都是可行手段。
5. 发散式变化。就是一个类的受多种变化的影响,这些影响往往是不同方向上的。这种情况应该将不同的变化原因分别抽离了出来。
6. 散弹式修改。指一种变化会引发多个类相应修改。此时应该把多出修改的地方集中到某一个现存或者新建的类中。
7. 依恋情结。是指某个类的函数或者代码依赖其他类的内容多过其自身,此时应该进行代码迁移,迁移至其最依赖的类当中。
8. 数据泥团。
9. 基本类型偏执。
10. Switch惊悚现身。代码中出现了大量的switch/case语句,这种情况往往可以使用多态消除掉。
11. 平行继承体系。指要为一个类增加一个子类,也必须为另一个类增加一个子类。
12. 冗余类。指类并没有体现其应有的价值,此时应该使其消失。
13. 夸夸其谈的未来性。某个类,某段代码是为未来准备的,但其实这种前瞻性并不太可能发生,那么这种未来的代码就可以暂时移除了。
14. 令人迷惑的临时字段。
15. 过度耦合的消息链。是指A.f1().f2().f3().f4()这种不断传递涉及多个对象的的消息链。做法之一是看一看链的终点是什么,可否直接提炼。
16. 中间人。这个是指委托的过度运用,某个类中有超过一半的函数都委托给其他类。此时应该直接和真正负责的对象打交道。
17. 不适当的关系。两个类多度亲密,花费太多的时间去探究彼此的私有成分。此时应该拆散它们,例如提取共同父类。
18. 异曲同工类。名字不同但其实所做事情差不多的两个类。同步功能,删掉另一个吧。
19. 不完美的库。
20. 幼稚的数据类(Data Class)。
21. 被拒绝的馈赠。子类只想要父类的某些内容而不是全盘继承。新建一个兄弟类,将不需要的父类功能转移到兄弟类中吧。
22. 过多的注释。注释并不是越多越好,因为代码过多的依赖于注释反而是代码不清晰的表现,尽可能的使用代码本身来“注释”代码吧。
[读书笔记] 重构改善既有代码的设计(2)
最新推荐文章于 2024-01-12 10:13:56 发布
本文是重构系列读书笔记的第二部分,重点介绍了22种常见的代码坏味道,包括重复代码、过长函数、过大的类等,并提供了相应的重构策略,如提取共同代码、拆分函数、减少耦合等,旨在提升代码质量和可维护性。
2990

被折叠的 条评论
为什么被折叠?



