Java措施最容易犯的21种错误实例阐明
1.Duplicated Code
代码反复险些是最常见的异味了。他也是Refactoring的主要方针之一。代码反复往往来自于copy-and-paste的编程气势气魄。与他相对应OAOO是一个好系统的重要符号。
2.Long method
它是传统布局化的“遗毒”。一个要领该当具有自我独立的意图,不要把几个意图放在一起。
3.Large Class
大类就是你把太多的责任交给了一个类。这里的法则是One Class One Responsibility.
4.Divergent Change
一个类内里的内容变革率差异。某些状态一个小时变一次,某些则几个月一年才变一次;某些状态因为这方面的原因产生变革,而另一些则因为其他方面的原因变一次。面向工具的抽象就是把相对稳定的和相对变革相断绝。把问题变革的一方面和另一方面相断绝。这使得这些相对稳定的可以重用。问题变革的每个方面都可以单独重用。这种相异变革的共存使得重用很是坚苦。
5.Shotgun Surgery
这正好和上面相反。对系统一个处所的改变涉及到其他很多处所的相关改变。这些变革率和变革内容相似的状态和行为凡是该当放在同一个类中。
6.Feature Envy
工具的目标就是封装状态以及与这些状态细密相关的行为。假如一个类的要领频繁用get 要领存取其他类的状态举办计较,那么你要思量把行为移到涉及状态数目最多的谁人类。
7.Data Clumps
某些数据凡是像孩子一样成群玩耍:一起呈此刻许多类的成员变量中,一起呈此刻很多要领的参数中,这些数据或者应该本身独立形成工具。
8.Primitive Obsession
面向工具的新手凡是习惯利用几个原始范例的数据来暗示一个观念。譬如对付范畴,他们会利用两个数字。对付Money,他们会用一个浮点数来暗示。因为你没有利用工具来表达问题中存在的观念,这使得代码变的难以领略,办理问题的难度大大增加。好的习惯是扩充语言所能提供原始范例,用小工具来暗示范畴、金额、转化率、邮政编码等等。
9.Switch Statement
基于常量的开关语句是OO 的大敌,你该当把他变为子类、state或strategy.
10.Parallel Inheritance Hierarchies
并行的担任条理是shotgun surgery的非凡环境。因为当你改变一个条理中的某一个类时,你必需同时改变别的一个条理的并行子类。
11.Lazy Class
一个干活不多的类。类的维护需要特另外开销,假如一个类包袱了太少的责任,该当消除它。
12.Speculative Generality
一个类实现了从未用到的成果和通用性。凡是这样的类或要领独一的用户是testcase.不要踌躇,删除它。
13.Temporary Field
一个工具的属性大概只在某些环境下才有意义。这样的代码将难以领略。专门成立一个工具来持有这样的孤儿属性,把只和他相关的行为移到该类。
14.Message Chain
动静链产生于当一个客户向一个工具要求另一个工具,然后客户又向这另一工具要求另一个工具,再向这另一个工具要求另一个工具,如此如此。这时,你需要埋没分配。
15.Middle Man
工具的根基特性之一就是封装,而你常常会通过度配去实现封装。可是这一步不能走得太远,假如你发明一个类接口的一泰半要领都在做分配,你大概需要移去这其中间人。—www.bianceng.cn
16.Inappropriate Intimacy
某些类彼此之间太亲密,它们耗费了太多的时间去砖研别人的私有部门。对人类而言,我们也许不该该太假正经,但我们该当让本身的类严格遵守禁欲主义。
17.Alternative Classes with Different Interfaces
做沟通工作的要领有差异的函数signature,一致把它们往类条理上移,直至协议一致。
18.Incomplete Library Class
要成立一个好的类库很是坚苦。我们大量的措施事情都基于类库实现。然而,如此遍及而又相异的方针对库构建者提出了苛刻的要求。库构建者也不是万能的。有时候我们会发明库类无法实现我们需要的成果。而直接对库类的修改有很是坚苦。这时候就需要用各类手段举办Refactoring.
19.Data Class
工具包罗状态和行为。假如一个类只有状态没有行为,那么必定有什么处所出问题了。
20.Refused Bequest
超类传下来许多行为和状态,而子类只是用了个中的很小一部门。这凡是意味着你的类条理有问题。
21.Comments
常常以为要写许多注释暗示你的代码难以领略。假如这种感受太多,暗示你需要Refactoring.