`
squall
  • 浏览: 45796 次
  • 性别: Icon_minigender_1
  • 来自: wuhan
社区版块
存档分类
最新评论

Refactoring 笔记 - 代码的坏味道总结

阅读更多
同一个 class 内的两个或多个方法有重复代码:使用 Extract Method 提抽取复代码。
多个互为兄弟的 class 含重复代码:对这些 class 使用 Extract Method 提抽取复代码,再使用
pull up method 把重复代码向上拉到父类中。
多个不相关的 class 出现重复代码:应该考虑使用 Extract Class,将重复代码抽取到一个独立的
class 中。抽取时应注意这些代码是否真的需要一个独立的类,应照 OO 原则将这些代码归属到
应该拥有这些代码的 class 中。
 
理清 class 的职责,把一些成员变量和方法抽取到一个新的 class 中或子类中。
技巧:可以先确定客户端如何使用它们,使用 Extract Interface 抽取接口,这可以帮助程序员
看清楚该如何分解这个 class。
 
参数过多可以考虑把这些参数由一个对象提供。
如果这些参数缺乏合理的对象归属,可以考虑为它们创建一个参数对象。
 
一般情况下一个变更修改应该只有一个修改点,如果不能做到这点,就应该想想这些地方是否
需要重构了(可以看看 OOAD 原则中的单一责任原则)。
 
如果需要修改的代码散布四处将会很难找到它们,也很容易忘记某个重要的修改。这种情况下
可以考虑把所有需要修改的代码放进同一个 class。如果没有合适的 class 可以创建一个,比如
说创建一个 Inline class。
当发现一个 class 的某个方法中使用了很多另一个对象的方法或值时就应该考虑把这个方法移到
它该去的地方。
有时候方法中只有一部分代码出现这种情况就应该考虑把这部分代码抽取出成独立的方法再移
到它该去的地方。
如果一个方法用上数个 class 的特性,那么应该考虑把这部份代码抽取为一个个的小方法再把它
们移到它该去的地方。
不管怎么说最根本的原则是总是将一起变化的东西放到一块儿。
 
应该使用面向对象中的多态还替换 case 语句。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics