代码的坏味道01:重复代码(Duplicated Code)

  如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将它们和而为一,程序会变得更好。

 

  同一个类的2个函数含有相同的表达式,这时可以采用Extract Method (提炼函数)提炼出重复的代码,然后让这2个地点都调用被提炼出来的那段代码。

 

  2个互为兄弟的子类内含相同表达式,只需对2个类都是用Extract Method (提炼函数),然后对被提炼出来的函数是用Pull Up Method (方法上移) ,将它推入超类。如果代码之间

只是类似, 并非完全相同,那么就得运用Extract Method (提炼函数)将相似部分和差异部分隔开,构成单独一个的函数。然后你可能发现可以运用Form Template Method (塑造模板函数)获得一个 Template Method设计模式。如果有些函数以不同的算法做相同的事,你可以选择其中较清晰地一个,并是用 Substitute Algorithm (替换算法)将其他函数的算法替换掉。

  

  如果2个毫不相关的类出现 重复代码,你应该考虑对其中一个运用 Extract Class (提炼类),将重复代码提炼到一个独立类中,然后在另一个类内使用这个新类。但是,重复代码所在的函数可能只应该属于某个类,另一个类只能调用它,抑或这个函数可能属于第三个类,而另2个类应该引用这第三个类。你必须决定这个函数放在哪儿最合适,并确保它被安置后就不会再在其他任何地方出现。

你可能感兴趣的:(code)