网站大量收购独家精品文档,联系QQ:2885784924

CH7 Java语言程序设计中的若干问题.pptVIP

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CH7: Java语言程序设计若干问题 Java编程规则 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。 9 Java编程规则 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作 10 Java编程规则 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。 11 Java编程规则 避免使用“魔术数字”,这些数字很难与代码很好地配合。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。 12 Java编程规则 涉及构建器和异常的时候,通常希望重新丢弃在构建器中捕获的任何异常——如果它造成了那个对象的创建失败。这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续。 13 Java编程规则 当客户程序员用完对象以后,若你的类要求进行任何清除工作,可考虑将清除代码置于一个良好定义的方法里,采用类似于cleanup()这样的名字,明确表明自己的用途。除此以外,可在类内放置一个boolean标记,指出对象是否已被清除。在类的finalize()方法里,请确定对象已被清除,如果还没有的话,就抛出一个异常。 14 Java编程规则 在一个特定的作用域内,若一个对象必须清除,请采用下述方法:初始化对象;若成功,则立即进入一个含有finally从句的try块,开始清除工作。 15 Java编程规则 若在初始化过程中需要覆盖finalize(),请记住调用super.finalize() 。在对finalize()进行覆盖的过程中,对super.finalize()的调用应属于最后一个行动,而不应是第一个行动,这样可确保在需要基础类组件的时候它们依然有效。 16 Java编程规则 创建大小固定的对象集合时,请将它们传输至一个数组。这样一来,我们就可享受到数组在编译期进行类型检查的好处。此外,为使用它们,数组的接收者也许并不需要将数组对象中的元素进行转换。 17 Java编程规则 尽量使用interfaces,不要使用abstract类。若已知某样东西准备成为一个基础类,那么第一个选择应是将其变成一个interface(接口)。只有在不得不使用方法定义或者成员变量的时候,才需要将其变成一个abstract(抽象)类。接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。 18 Java编程规则 在构建器内部,只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法,因为那些方法可能被其他人覆盖或取消,从而在构建过程中产生不可预知的结果 19 Java编程规则 对象不应只是简单地容纳一些数据;它们的行为也应得到良好的定义。 20 Java编程规则 在现成类的基础上创建新类时,请首先选择“composition”。只有自己的设计要求必须继承时,才应考虑这方面的问题。若在本来允许“composition”的场合使用了继承,则整个设计会变得没有必要地复杂。 21 Java编程规则 用继承及方法覆盖来表示行为间的差异,而用字段表示状态间的区别。 22 C/C++与Java的比较 Java内建了对多线程的支持。利用一个特殊的Thread类,我们可通过继承创建一个新线程(放弃了run()方法)。若将synchronized关键字作为方法的一个类型限制符使用,相互排斥现象会在对象这一级发生。在任何给定的时间,只有一个线程能使用一个对象的synchronized方法。在另一方面,一个synchronized方法进入以后,它首先会“锁定”对象,防止其他任何synchronized方法再使用那个对象。只有退出了这个方法,才会将对象“解锁”。在线程之间,我们仍然要负责实现更复杂的同步机制,方法是创建自己的“监视器”类。递归的synchronized方法可以正常运作。若线程的优先等级相同,则时间的“分片”不能得到保证。 异同点26 C/C++与Java的比较 Java不是象C++那样声明代码块,而是将访问限定符置入每个类成员的定义里。若未规定一个显式限定符,就会取默认值。意味着同一个包里的其他元素也可以访问它(相当于它们都成为C++的friends),但不可由包外的任何元素访问。 异同点27 类——以及类内的每个方法——都有一个访问限定符,决定它是否能在文件的外部“可见”。 C/C++与Java的比较 嵌套的类。在C++中,对类进行嵌套有助于隐藏名称,并便于代码的组织(但C++的“命名空间”已使名称的隐藏显得多余)。Java的“封装”或“打包”概念等价于C++的命名空间,所以不再是一个问题。Java 1.1引入了“内部类”的概念,它秘密保持指向外部类的一个句柄

文档评论(0)

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

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

1亿VIP精品文档

相关文档