Java2.0编程规范.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java2.0编程规范

J By hua ava编程规范 1. 总体规范 【规范1】时刻考虑到你的每一个类都会由其他的人在其他的时间使用、维护、增强。 【规范2】永远不要曝露实现细节。 【规范3】尽量使你的类不易被修改,同时尽量使你的类容易被扩展。 【规范4】针对抽象编程。 【规范5】一个类只完成一件事情。 【规范6】父类应该可以完全替代子类。 【规范7】优先使用聚合复用(而非继承复用)。 【规范8】确保类与类之间的认知程度最小。 2. 封装规范 【规范1】不要声明访问控制级别为public的类成员变量、属性或域。 说明: 1. 类成员变量体现了类的状态,public成员变量会使得类的使用者不受限制的访问或改变类的当前状态,这是极为危险的。 2. 不受限制的访问类成员会导致不可预期的错误(你已经失去了采取限制措施的能力)。 3. public成员变量容易导致类之间的紧密偶合。 4. 如果有必要访问类的成员变量,应该为该变量设置访问器(accesser)方法: 5. 如果需要,可以声明public 常量。 【规范2】尽量降低类的可访问性。 说明: 1. 可以有效的解除类之间的偶合关系,使得这些类可以独立的演化。 2. 可以使得类更加容易理解和使用?D?D其他程序员会更直观的了解类的功能和使用方法。 3. 特别注意一些从基类继承的方法的可访问性,尤其是在java中,所有类都缺省的继承了Object,所以必须注意如果Object提供的实现不能满足需要或者破坏了我们的意图,则应该覆盖由Object类继承的方法。 【规范3】设计和开发最小功能类?D?D一个类只做一件事情。 说明: 1. 一个实现了很多功能的类是难以维护的。 2. 一个实现了很多功能的类是难以阅读和理解的。 【规范4】尽量创建非可变类(只读类) 说明: 1. 非可变类易于使用。 2. 通常非可变类是线程安全的。 3. 一个非可变类的例子: 【规范5】通过限制类的构造函数的可访问性来限制类的使用范围 说明: 1. 对于只提供了静态(static)方法和静态final域的类,构造函数是没有必要的,所以应该将该构造函数声明为private。 2. 如果一个类可以通过工厂类或简单工厂方法创建,则需要考虑将构造函数声明为private(简单工厂方法)或friendly(工厂类)。 3. 对于Java语言,如果一个类只被同一个包(package)的类实例化(注意,不是访问),那么应该将构造函数声明为friendly。 【规范6】不要使用全局(global)变量(对于C++等非纯面向对象的语言) 说明:全局变量是难以控制的、非线程安全的,你不知道哪一个函数或线程在何时修改了它们。如果一定要使用全局变量,那么请把它们封装在类中。 【规范7】尽量使用构造函数初始化对象,而且构造函数应该构造完全的初始化对象 说明:不要采用类似init()这样的函数代替构造函数的初始化作用,除非你有特别好的理由。与构造函数不同,初始化函数不具备强制性。类的使用者完全可以不调用这个函数而直接使用没有初始化的对象。 3. 多态(polymorphism)和继承(inheritance)的使用规范 【规范1】除非类是专门为继承而设计并且有很好的文档,否则禁止继承。 说明:继承复用是一种强偶合关系,继承打破了封装性。如果一个类依赖于父类的某些实现,则如果父类发生变化则可能打破该类的意图。 1. 如果超类添加了新的方法,则可能与子类的现有方法(对于超类的扩展)冲突。 2. 如果超类修改了某些方法的实现,则很可能改变子类的行为,而这种改变是不被子类所希望的。 3. 专门用于继承的类必须有很好的文档说明: a) 描述每一个方法的意图。 b) 描述改写每一个方法所带来的影响。 4. 超类中的构造方法绝对不要调用可以改写的方法,因为,超类的构造方法在子类的构造方法被调用之前执行,所以,这样作会导致子类方法在没有初始化之前就被调用。 5. 为了防止类被错误的继承,可以将类声明为final。 6. 为了防止方法被错误的改写,可以将方法声明为final。 【规范2】对于不是为继承而设计的类,必须将类声明为final(Java)/const(C++)。 说明:参见本节【规范1】。 【规范3】优先使用聚合(Composition)复用,而非继承复用。 说明: 聚合:如果类A含有类B的一个或多个私有域,那么就叫做类A聚合了类B。 1. 聚合复用不会打破封装性。 2. 使用聚合复用来扩展一个超类不会导致二者直接的紧密偶合。 【规范4】接口优于抽象类。 说明: 1. 抽象类的内存结构远比接口复杂,所以编译器实现对于抽象类的继承

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档