重复代码
事不过三,首当其冲的就是重复 代码,设法将其合而为一,程序会变更好。
重复代码通常情况:1,同一个类两个方法中用到同一个表达式,应该把它抽出来;2,互为兄弟子类,有相同表达式,可以抽到超类里,如果函数大致相同有不同处可以把相同处抽出来;3,多个不相干的类用到同一段代码,可以考虑抽一个新的类出来。
过长函数
程序越长越难理解,拥有短函数的对象活的长,活的好。
过大的类
如果一个类想做太多事情,就会拥有很多实例变量,一旦这样,重复代码就会接踵而至,混乱导致死亡。
过长参数列
参数太长太繁琐,会很难理解,也可能造成前后不一致,不易使用。
发散式变化
我们希望程序可以被修改,如果某个类经常因为不同的原因被修改,可以考虑把这个类分开,使得每个类只因为一种变化而修改。
霰弹式修改
类似发散式修改,又恰恰相反,如果每遇到某个变化,就需要在不同的类里做许多小修改,可以考虑把这些小修改集中到一个新类里。
依恋情节
对象技术的要点在于它是一种“将数据和操作数据的行为包装起来”的技术。如果函数对某个类的兴趣高于对自己所在类的兴趣,比如某个函数为了计算某个值,从另一个对象调用了近乎半打函数,我们就要考虑帮他换个地方,或是用其他方法重构他了。