|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。条记
四。类和接口
第12条:使类和成员的可会见才能最小
为了更好的完成信息埋没,下降各模块的耦合度,尽量地下降类和成员的会见才能是必需的。有一点出格关头,就是私有的静态final域几近全体是毛病的。客户能够修正如许的成员数组,应当改成公有的才是平安的。
第13条:撑持非可变类
使一个类成为非可变类必要做到以下5点:
1。不克不及供应任何会修正对象的办法
2。包管没有可被子类覆写的办法,能够经由过程使这个类为final来到达
3。使一切的成员变量都是final
4。使一切的成员变量都为公有
5。包管关于任何可变组件互斥会见
使一个类成为非可变类的的长处:
1。非可变类一般对照复杂,呵呵,这点很分明,他只要一个形态
2。非可变类一般是线程平安的
3。非可变类为其他对象供应了良多构件
4。非可变类最年夜的弱点在于关于每一个分歧的值(大概说形态),都请求一个独自的对象,在某些情形下你必要创立十分多的对象,功能上有很年夜影响
只管云云,全力使每个类成为非可变类应当是你寻求的方针。
第14条:复合优于承继
今天在看《面向对象编程导论》,提到“子类”和“子范例”是分歧的,交换准绳只合适于子范例干系,而一样平常编程言语只是思索了子类干系,子类申明了新类是承继自父类,而子范例夸大的是新类具有父类一样的举动(一定是承继)。那末,甚么时分才应当利用承继?那就是切合子范例干系的时分,大概一样平常所说的”isa"干系,你必需包管新类的举动与父类完整分歧!!!在任何利用父类的场所,新类应当体现一样的举动。
承继是OOP最主要的观点之一,可是承继也损坏了“封装性”,子类的完成要依附于父类的完成细节。以是,除下面提到的情形外,你应当只管用复合代替承继。(在覆写equals()办法也提到了这点)不然都属于承继的滥用,手艺的滥用已不足为奇了。
第15条:要末专门的计划,以利用承继,并给出文档申明,要末克制承继
这点跟下面一点夸大的一样。假如你要利用承继,请做好计划,在机关函数,clone(),readSolve()办法中不要挪用任何可变的办法,并写出具体的文档申明。实在最好的情形,仍是不利用的好!
第16条:接口优于笼统类
接口是界说具有多个完成的范例的最好路子,这点很分明,每一个详细类完成接口分歧。假如当演变的简单性比天真性更主要的时分,你应当利用笼统类。如,你要往笼统类中增添一个办法,任何完成这个笼统类的子类就主动具有这一个办法,而接口则不克不及,一切私有的接口的计划要十分审慎,并包管全力对外不做修正。在利用接口的时分,一样平常都计划一个笼统类作为“骨架”,这个笼统类应当尽量地小,只保存有最基础的功效。
第17条:接口只是被用于完成范例
你完成了一个接口,就代表这个类是该接口的范例。在使用我们常常看到在接口中界说静态私有的常量,这实际上是对接口的误用(汗,我是这类毛病的典范),如
publicinterfaceConstants{
publicintONE=1;
......
}如许的情势完整是毛病的,应当利用一个不克不及发生实例的类来取代
publicclassConstants{
privateCOnstants(){}//机关函数为公有
pulicstaticfinalintONE=1;
......
}
第18条:应当优先思索静态外部类
非静态类老是和内部类的实例相接洽,应当只管利用静态外部类。
C#是不行的,比如说美国的航天飞船里就有java开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作, |
|