软件高质量代码管理:CleanCode--识别代码坏味道
2020-12-02 本文已影响0人
mumuxi_
Good code is not bad code ! 识别代码坏味道,是创建好代码的重要一步。所谓重构,无非就是嗅到坏味道的代码,然后一小步一小步地改了它。22种经典代码坏味道--参见《重构》
1.Duplicated Code
(重复代码)难维护。
解决方法:提取公共函数。
2.Long Method
(函数长)难理解。
解决方法:拆分成若干函数。
3.Large Class
(类大)难理解。
解决方法:拆分成若干类。
4.Long Parameter List
(参数多)难用,难理解。
解决方法:将参数封装成结构或者类。
5.Divergent Change
(万能类)发散试修改,改好多需求,都会动他。
解决方法:拆,将总是一起变化的东西放在一块儿。
6.Shotgun Surgery
(天女散花的逻辑)散弹试修改,改某个需求的时候,要改很多类。
解决方法:将各个修改点,集中起来,抽象成一个新类。
7.Feature Envy
(红杏出墙的函数)使用了大量其他类的成员
解决方法:将这个函数挪到那个类里面。
8.Data Clumps
(数据团)常一起出现的一坨数据。
9.Primitive Obsession
(偏爱基本类型)热衷于使用int, long, String等基本类型。
10.Switch Statements
(switch语句)
解决方法:state/strategy 或者只是简单的多态。
11.Parallel Inheritance Hierarchies
(平行继承)增加A类的子类ax,B类也需要相应的增加一个bx。
12.Lazy Class
(冗赘类)如果他不干活了,炒掉他吧。
13.Speculative Generality
(夸夸其谈未来性)
14.Temporary Field
(临时字段)仅在特定环境下使用的变量
15.Message Chains
(消息链)过度耦合的才是坏的。
16.Middle Man
(中介)大部分都交给中介来处理了。
17.Inappropriate Intimacy
(太亲密)两个类彼此使用对方的私有的东西。
18.Alternative Classes with Different Interfaces
(相似的类,有不同接口)
19.Incomplete Library Class
(不完善的类库)
20.Data Class
(纯数据类)类很简单,仅有公共成员变量,或简单操作函数。
21.Refused Bequest
(继承过多)父类里面方法很多,子类只用有限几个。
22.Comments
(太多注释)这里指代码太难懂了,不得不用注释解释。