代码中的Bad Smell坏味道
最近一段时间的工作都要维护一些老代码以及做一些Code Review。代码中的那些Bad Smell真的让人很抓狂,想起之前看过的Martin Fowler的《重构》,于是就整理了一些自己常能体会到的代码中的Bad Smell.
Bad Smell列举
1.重复代码
消除重复代码的基本方法是:如果是同一个类中的重复代码就把这个方法“抽取”出来;如果是两个兄弟类之间的重复代码需要把方法抽取出来,并提升到父类中;如果是两个不相关类间的代码重复,就
2.方法过大
应该更积极进取地分解函数。我们遵循这样一条原则:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中, 并以其用途(而非实现手法)命名。我们可以对一组或甚至短短一行代码做这件事。哪怕替换后的函数调用动作比函数自身还长,只要函数名称能够解释其用途,我 们也该毫不犹豫地那么做。关键不在于函数长度,而在于函数[做什么]和[如何做]之间的语义距离。
3.类过大
类过大往往意味着想利用单一class做太多事情,其内往往就会出现太多instance变量。一旦如此,代码重复、God Object之类的问题也就是接踵而至了。
解决类过大的方法就是要思考类的定义和职责,将原本一个类中完成的功能分解到其他几个类中。
4.过长参数列
方法的参数要尽量的少,超过3个以上的参数就会直接影响方法的理解。这个可以根据参数间的关联性抽取出一个对象来。
6.多层的条件语句,循环语句嵌套.
If里面嵌套If,for里面继续循环for。这种情况可以适当的将嵌套的内容抽取出来。
7.变量名不具备说明性。
变量名应该具有足够的说明性。除了常用的i,j作为循环变量。通常一些全局变量和实例变量的变量名应该足够长,并具有足够的说明性,并保证不易跟其他变量混淆。
10.方法和类的职责要具有单一性,并且名称能够具备说明性。
