代码的味道

转载自:http://javatar.iteye.com/blog/95508

什么时候需要Refactoring? 
代码的味道是高水平程序员对“好程序“的一种感觉,他们具备一种能力,即使不涉及程序代码的具体实现就能看出你的设计是否合理。 
如果代码有“异味“,那么你需要进行Refactorying. 

 

需要慢慢多次的体会。
1、重复代码(Duplicate Code) 
即使是一两句代码的重复也需要refactoring,有时候重复不是那么明显,你需要首先进行其他的refactoring才能看到代码重复。排除代码重复是OO软件工程最重要的研究课题之一 
2、长方法(Long Method) 
来自于面向过程的思路,即使能够在一页内能够显示的方法也可能太长。 
3、大类(Large Class) 
一个类含有太多的责任和行为 
4、参数太多(Long Parameter List) 
对象含有状态,不再需要太多的参数。 
5、不一致的变化(Divergent Change) 
不要把变化速度不同的东西放在一起。不要把一个方法对每个子类的变化的部分和不变化的部分放在一起。不要把对象中每秒都在变化的实例变量和一个月才变化一次的实例变量放在一起...等等。 
6、Shotgun Surgery 
改变影响到太多的类和方法 
7、特性羡慕(Feature Envy) 
对其他对象中的数据太感兴趣了 
8、数据从(Data Clumps ) 
一块数据到处一起使用,他们应该有自己的类 
9、原始类型困扰(Primitive Obsession) 
用类代替原始数据类型 
10、开关语句(Switch Statement) 
面向对象由其他办法来处理这些依赖于类型的方法。 
11、并行继承层次(Parallel Inheritance Hierarchies ) 
有时候有用但有时候不必要 
12、惰类(Lazy Class) 
不足以自己成为一个类,应该排除 
13、投机通则(Speculative Generality ) 
不要太多考虑为将来而建立的灵活性 
14消息链(Message Chain ) 

硬性把客户和导航结构相耦合 
15中间人(Middle Man ) 

如果他所有的事情就是在做分派,那么应当删除。 
16不合适的亲密(Inappropriate Intimacy) 

限制对其他类内部结构的知识和了解。 
17不完整的库类(Incomplete Library Class ) 

某些时候必须扩展一增加所需的功能 
18数据类(Data Class ) 

应当添加任务和行为来处理它的数据 
19被拒绝的遗产(Refused Bequest ) 

子类很少利用父类给予它们的东西 
20、注释(Comments ) 
注释是说明why而不是what的好地方。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值