|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。程序|毛病 1.DuplicatedCode
代码反复几近是最多见的异味了。他也是Refactoring的次要方针之一。代码反复常常来自于copy-and-paste的编程作风。与他绝对应OAOO是一个好体系的主要标记。
2.Longmethod
它是传统布局化的“遗毒”。一个办法应该具有自我自力的企图,不要把几个企图放在一同。
3.LargeClass
年夜类就是你把太多的义务交给了一个类。这里的划定规矩是OneClassOneResponsibility.
4.DivergentChange
一个类内里的内容变更率分歧。某些形态一个小时变一次,某些则几个月一年才变一次;某些形态由于这方面的缘故原由产生变更,而另外一些则由于其他方面的缘故原由变一次。面向对象的笼统就是把绝对稳定的和绝对变更相断绝。把成绩变更的一方面和另外一方面相断绝。这使得这些绝对稳定的能够重用。成绩变更的每一个方面都能够独自重用。这类相异变更的共存使得重用十分坚苦。
5.ShotgunSurgery
这恰好和下面相反。对体系一个中央的改动触及到其他很多中央的相干改动。这些变更率和变更内容类似的形态和举动一般应该放在统一个类中。
6.FeatureEnvy
对象的目标就是封装形态和与这些形态严密相干的举动。假如一个类的办法频仍用get办法存取其他类的形态举行盘算,那末你要思索把举动移到触及形态数量最多的谁人类。
7.DataClumps
某些数据一般像孩子一样成群游玩:一同呈现在良多类的成员变量中,一同呈现在很多办法的参数中,这些数据也许应当本人自力构成对象。
8.PrimitiveObsession
面向对象的老手一般习气利用几个原始范例的数据来暗示一个观点。比如关于局限,他们会利用两个数字。关于Money,他们会用一个浮点数来暗示。由于你没有利用对象来表达成绩中存在的观点,这使得代码变的难以了解,办理成绩的难度年夜年夜增添。好的习气是扩大言语所能供应原始范例,用小对象来暗示局限、金额、转化率、邮政编码等等。
9.SwitchStatement
基于常量的开关语句是OO的年夜敌,你应该把他变成子类、state或strategy.
10.ParallelInheritanceHierarchies
并行的承继条理是shotgunsurgery的特别情形。由于当你改动一个条理中的某一个类时,你必需同时改动别的一个条理的并行子类。
11.LazyClass
一个干活未几的类。类的保护必要分外的开支,假如一个类承当了太少的义务,应该打消它。
12.SpeculativeGenerality
一个类完成了从未用到的功效和通用性。一般如许的类或办法独一的用户是testcase.不要夷由,删除它。
13.TemporaryField
一个对象的属性大概只在某些情形下才成心义。如许的代码将难以了解。专门创建一个对象来持有如许的孤儿属性,把只和他相干的举动移到该类。最多见的是一个特定的算法必要某些只要该算法才有效的变量。
14.MessageChain
动静链产生于当一个客户向一个对象请求另外一个对象,然后客户又向这另外一对象请求另外一个对象,再向这另外一个对象请求另外一个对象,云云云云。这时候,你必要埋没分拨。
15.MiddleMan
对象的基础特征之一就是封装,而你常常会经由过程分拨往完成封装。可是这一步不克不及走得太远,假如你发明一个类接口的一泰半办法都在做分拨,你大概必要移往这其中间人。
16.InappropriateIntimacy
某些类互相之间太亲热,它们消费了太多的工夫往砖研他人的公有部分。对人类而言,我们大概不该该太假正派,但我们应该让本人的类严厉恪守禁欲主义。
17.AlternativeClasseswithDifferentInterfaces
做不异事变的办法有分歧的函数signature,分歧把它们往类条理上移,直至协定分歧。
18.IncompleteLibraryClass
要创建一个好的类库十分坚苦。我们大批的程序事情都基于类库完成。但是,云云普遍而又相异的方针对库构建者提出了刻薄的请求。库构建者也不是全能的。偶然候我们会发明库类没法完成我们必要的功效。而间接对库类的修正有十分坚苦。这时候候就必要用各类手腕举行Refactoring.
19.DataClass
对象包含形态和举动。假如一个类只要形态没有举动,那末一定有甚么中央出成绩了。
20.RefusedBequest
超类传上去良多举动和形态,而子类只是用了个中的很小一部分。这一般意味着你的类条理有成绩。
21.Comments
常常以为要写良多正文暗示你的代码难以了解。假如这类感到太多,暗示你必要Refactoring.
不得不提一下的是:.net是看到java红,而开发出来的工具。 |
|