代码改变世界

代码坏味道-代码膨胀

2016-03-02 15:20  yoogo  阅读(747)  评论(0编辑  收藏  举报

 

代码膨胀


 

长方法

症状

一个方法行数太多,一般超过十行你就值得怀疑。 

成因:

一个方法,日积月累,只添代码从不清理-很说时候是因为认为没有必要再创建一个新的方法,最终形成意大利面条式的代码。 

治疗:

如果需要在一个方法内部添加注释,你应该把要注释的代码放到一个新方法里,即使这个代码只有一行,然后给这个方法起个描述性强的名字,别人不用读方法体就知道它做什么。 

回报:

短方法的类存活期长;

长方法不仅仅降低了可读性和可维护性,而且是重估代码的保护伞。 

 


 

大类

症状:

字段多,方法多,行多。 

成因:

像长方法一样,日积月累而来 。

治疗:

抽类,抽子类,抽接口

 

回报:

增加可读性

减少重复代码


 

迷恋使用原始类型

症状:

倾向使用原始类型而不是小对象来表示简单任务

成因:

治疗:

回报:

代码更有弹性,聚合相同的操作,代码组织的更好理解,易于发现重复代码


 

长参数列表

现象:

参数超过3~4 个。 

成因:

多个算法合并到一个方法中,多个参数可能被用来决定哪个算法执行以及执行什么;

为了减少类之间的依赖通常也导致这个症状- 某个方法B需要创建需要的对象C,但我们把创建对象C的代码移到了调用这个方法B的地方A, 然后从A传C给B。从而使B对C的具体类型透明。但如果有很多同类的实例C需要创建,那就需要传多个参数。 

治疗:

如果参数仅仅是另一个方法的返回值,那把方法调用移到目标方法中。

多个参数同属于某个对象的话,直接使用这个对象。

最后,如果多个参数没有什么关系,直接包装他们成对象。 

回报:

可读性好了,代码少了。

发现重复代码。


数据丛

症状:

多个地方出现相同的一组数据。 如果数据具有相关性,且你不能删除其中一个,那这些数据就是数据丛。 

成因:

不当的编程结构或复制粘贴行为。

治疗:

抽类。

尝试把被这些数据使用的代码移动到数据类中。 

回报:

增加可读性

注意:把整个对象而不是对象的某个属性作为参数,可能增加不想要的依赖。