代码坏味道-代码膨胀
2016-03-02 15:20 yoogo 阅读(747) 评论(0) 编辑 收藏 举报代码膨胀
长方法
症状
一个方法行数太多,一般超过十行你就值得怀疑。
成因:
一个方法,日积月累,只添代码从不清理-很说时候是因为认为没有必要再创建一个新的方法,最终形成意大利面条式的代码。
治疗:
如果需要在一个方法内部添加注释,你应该把要注释的代码放到一个新方法里,即使这个代码只有一行,然后给这个方法起个描述性强的名字,别人不用读方法体就知道它做什么。
- 尝试抽方法
- 如果本地变量和参数阻碍抽方法,可尝试 Replace Temp with Query, Introduce Parameter Object orPreserve Whole Object. 。
- 以上办法不行,可以再尝试 Replace Method with Method Object.
回报:
短方法的类存活期长;
长方法不仅仅降低了可读性和可维护性,而且是重估代码的保护伞。
大类
症状:
字段多,方法多,行多。
成因:
像长方法一样,日积月累而来 。
治疗:
抽类,抽子类,抽接口
回报:
增加可读性
减少重复代码
迷恋使用原始类型
症状:
倾向使用原始类型而不是小对象来表示简单任务
成因:
治疗:
回报:
代码更有弹性,聚合相同的操作,代码组织的更好理解,易于发现重复代码
长参数列表
现象:
参数超过3~4 个。
成因:
多个算法合并到一个方法中,多个参数可能被用来决定哪个算法执行以及执行什么;
为了减少类之间的依赖通常也导致这个症状- 某个方法B需要创建需要的对象C,但我们把创建对象C的代码移到了调用这个方法B的地方A, 然后从A传C给B。从而使B对C的具体类型透明。但如果有很多同类的实例C需要创建,那就需要传多个参数。
治疗:
如果参数仅仅是另一个方法的返回值,那把方法调用移到目标方法中。
多个参数同属于某个对象的话,直接使用这个对象。
最后,如果多个参数没有什么关系,直接包装他们成对象。
回报:
可读性好了,代码少了。
发现重复代码。
数据丛
症状:
多个地方出现相同的一组数据。 如果数据具有相关性,且你不能删除其中一个,那这些数据就是数据丛。
成因:
不当的编程结构或复制粘贴行为。
治疗:
抽类。
尝试把被这些数据使用的代码移动到数据类中。
回报:
增加可读性
注意:把整个对象而不是对象的某个属性作为参数,可能增加不想要的依赖。