代码的味道--烟熏鲱鱼2
2016-07-25 本文已影响10人
whyreal
烟熏鲱鱼(臭臭)
指那些已经被添加了太多属性或者方法的,难以维护的的函数或类。通常这种情况不是突然出现的,而是随着代码进化而不断积累,特别是在没有人专门维护代码的时候。
超大的类
特征和症状
一个类中包含太多的属性、方法、代码。
原因
开始的时候 class 通常很小。但是随着程序的发展,class 变得越来越臃肿。类似于 method 的情况,人们为了图省事儿不愿意为新功能创建新的 class,而更愿意将新功能加在原有的 class 中。
解决办法
当 class 变得臃肿的时候,应该考虑拆分它。
当一个类干了两个类的活儿的时候:

应该考虑创建一个新 class 将相关的属性及方法拆分出去

当一个类中包含一些只有在特定情况下才会被使用的功能时

应该创建一个子类并且在特定情况下使用

当多个 client 使用类接口的相同部分,或者多个 class 有相同的接口时

将相同的部分移动到接口当中

在 GUI 程序中将域数据存储在 class 中

将域数据保存在单独的类中,以保证与 GUI 的通讯和同步是个好主意

收益
- 对于类的拆分,可以帮助程序员从必须记住大量属性的情况解脱
- 大多数情况,拆分巨型类,可以介绍代码或函数重复的情况