招录自《重构 改善既有代码的设计》,融入一些个人的理解

代码的坏味道

重复代码

这是我们最常见的一种代码冗余,相似的代码,只有一些参数不同,但是拷贝到了好几个地方。只要用心去写代码,这种是可以避免的。

过长函数

这个很好理解,一个函数拖了几屏,难看难读难改。最好的办法是一个功能一个函数,切忌把多个功能放到一个函数里,造出一个超级万能函数。如果一个函数超出半屏,我们就要考虑重构了。

过大的类

曾经见过一个类有5000+行,还在不停往上堆。同过长函数一样,还是指责划分不明确。解决方法就是拆,相同功能拆成一个类,然后再组装起来。

过长参数列

排除函数职责太多的因素,只是确实用到这么多参数的话,可以把参数归到一个对象里面。不推荐用数组封装参数,那样代码更隐晦了。

发散式变化:类经常因为不同的原因在不同的方向上发生变化

还是职责太多了,需要面对不同职责的改动,一个字,拆。

霰弹式修改:每遇到某种变化,你都必须在许多不同的类内做出许多小修改

和发散式变化想法,这次是把相同职责放到不同类里面了,这时就考虑把这些职责归成一个类

依恋情结:一个类的动作过分依赖其他类

数据泥团:不同地方的相同数据字段

基本类型偏执

Switch 惊悚现身:考虑用多态代替 switch

平行继承体系:为某个类增加一个子类的时候,也必须为另一个类相应增加一个子类

冗赘类

夸夸其谈未来性:某个抽象类其实没啥太大作用

令人迷惑的暂时字段

过度耦合的消息链

中间人:某个类接口有一半的函数都委托给其他类

狎昵关系:两个类过于亲密

异曲同工的类:两个函数做同一件事,却有着不同的签名

不完美的库类

纯稚的数据类:单纯的数据容器

被拒绝的遗赠:子类复用超类的行为,却又不愿意支持超类的接口

过多的注释:当你感觉需要撰写注释时,请先尝试重构,试着让所有注释都变得多余