1>同一个类有两个函数含有相同的表达式,需要选择其中一个并给这个函数一个"做什么"的名子
2>互为兄弟的子类内含有相同的表达式, 需要pull up到父类中
3>如果代码之间只是类似,并非完全相同,那么就得运用Extract Method(提炼函数)讲相似部分和差异部分割开.构成单独一个函数.
4>然后你发现可以运用From Template Method(塑造模板函数),获得一个Template Method设计模式.
5>如果有些函数以不同的算法做相同的事, 你可以选择其中较清晰度一个, 并使用Substitue Algorithm(替换算法)
6>如果两个毫不相关的类出现Duplicate Code, 你应该考虑其中一个使用Extract Class(提炼类),将重复的代码提炼到一个独立类中,然后再另一个类内使用这个新类. 但是重复代码所在的函数也可能的确只应属于某个类, 另一类只能调用它, 抑或是这个函数可能属于第三个类, 而另两个类应该引用第三个类. 你需要根据具体情况,决定这个函数放在哪儿最合适, 并确保它被安置后就不会再在其他任何地方出现.