如何编出健壮的代码,java编程30条规则(二)
来源: 网络转载 时间:2009-6-15
(16) 若在初始化过程中需要覆盖(取消)finalize(),请记住调用super.finalize()(若Object属于我们的直接超类,则无此必要)。在对finalize()进行覆盖的过程中,对super.finalize()的调用应属于最后一个行动,而不应是第一个行动,这样可确保在需要基础类组件的时候它们依然有效。
(17) 创建大小固定的对象集合时,请将它们传输至一个数组(若准备从一个方法里返回这个集合,更应如此操作)。这样一来,我们就可享受到数组在编译期进行类型检查的好处。此外,为使用它们,数组的接收者也许并不需要将对象“造型”到数组里。
(18) 尽量使用interfaces,不要使用abstract类。若已知某样东西准备成为一个基础类,那么第一个选择应是将其变成一个interface(接口)。只有在不得不使用方法定义或者成员变量的时候,才需要将其变成一个abstract(抽象)类。接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。
(19) 在构建器内部,只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法,因为那些方法可能被其他人覆盖或取消,从而在构建过程中产生不可预知的结果(参见第7章的详细说明)。
(20) 对象不应只是简单地容纳一些数据;它们的行为也应得到良好的定义。
(21) 在现成类的基础上创建新类时,请首先选择“新建”或“创作”。只有自己的设计要求必须继承时,才应考虑这方面的问题。若在本来允许新建的场合使用了继承,则整个设计会变得没有必要地复杂。
(22) 用继承及方法覆盖来表示行为间的差异,而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色,这是绝对应该避免的:应直接使用一个“颜色”字段。
(23) 为避免编程时遇到麻烦,请保证在自己类路径指到的任何地方,每个名字都仅对应一个类。否则,编译器可能先找到同名的另一个类,并报告出错消息。若怀疑自己碰到了类路径问题,请试试在类路径的每一个起点,搜索一下同名的.class文件。
(24) 在Java 1.1 AWT中使用事件“适配器”时,特别容易碰到一个陷阱。若覆盖了某个适配器方法,同时拼写方法没有特别讲究,最后的结果就是新添加一个方法,而不是覆盖现成方法。然而,由于这样做是完全合法的,所以不会从编译器或运行期系统获得任何出错提示——只不过代码的工作就变得不正常了。
(25) 用合理的设计方案消除“伪功能”。也就是说,假若只需要创建类的一个对象,就不要提前限制自己使用应用程序,并加上一条“只生成其中一个”注释。请考虑将其封装成一个“独生子”的形式。若在主程序里有大量散乱的代码,用于创建自己的对象,请考虑采纳一种创造性的方案,将些代码封装起来。
(26) 警惕“分析瘫痪”。请记住,无论如何都要提前了解整个项目的状况,再去考察其中的细节。由于把握了全局,可快速认识自己未知的一些因素,防止在考察细节的时候陷入“死逻辑”中。
(27) 警惕“过早优化”。首先让它运行起来,再考虑变得更快——但只有在自己必须这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候,才应进行优化。除非用专门的工具分析瓶颈,否则很有可能是在浪费自己的时间。性能提升的隐含代价是自己的代码变得难于理解,而且难于维护。
(28) 请记住,阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序,但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己,还是对后来的人,它们都是相当重要的。如对此仍有怀疑,那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折,这样或许能将你说服。
(29) 如认为自己已进行了良好的分析、设计或者实施,那么请稍微更换一下思维角度。试试邀请一些外来人士——并不一定是专家,但可以是来自本公司其他部门的人。请他们用完全新鲜的眼光考察你的工作,看看是否能找出你一度熟视无睹的问题。采取这种方式,往往能在最适合修改的阶段找出一些关键性的问题,避免产品发行后再解决问题而造成的金钱及精力方面的损失。
(30) 良好的设计能带来最大的回报。简言之,对于一个特定的问题,通常会花较长的时间才能找到一种最恰当的解决方案。但一旦找到了正确的方法,以后的工作就轻松多了,再也不用经历数小时、数天或者数月的痛苦挣扎。我们的努力工作会带来最大的回报(甚至无可估量)。而且由于自己倾注了大量心血,最终获得一个出色的设计方案,成功的快感也是令人心动的。坚持抵制草草完工的诱惑——那样做往往得不偿失。
分享到:
相关推荐
Java 编程 30 条规则 Java 编程 30 条规则旨在帮助开发者编写高...这 30 条规则对 Java 编程进行了详细的规定,帮助开发者写出高质量的 Java 代码。遵循这些规则,开发者可以写出更加简洁易读、易维护和可靠的代码。
【Java编程30条规则】是针对Java程序员的编程准则,旨在提高代码质量和可维护性。以下是基于提供的部分内容,对这些规则的详细解释: 1. **命名规范**:类名应以大写字母开头,字段、方法和对象名首字母小写。所有...
在Java编程语言的学习过程中,实例程序是理解和掌握概念的关键。"java简单实例程序源代码"这个压缩包包含了一系列章节相关的Java实例源代码,适合初学者和有经验的开发者用来加深对Java语言的理解。以下是这些章节...
### Java代码静态检测规则概述 Java作为一种广泛应用的编程语言,在软件开发过程...这些规则涵盖了从基本编码实践到高级设计模式的应用,对于任何希望编写健壮、高效Java应用程序的开发者来说都是非常宝贵的指导原则。
### Java编程31条规则详解 #### 规则1:命名规范与静态常量 - **知识点**:Java中类名、方法名、字段名的命名应遵循驼峰式命名法,如`ThisIsAClassName`。静态常量应全部大写,用下划线分隔单词,如`JAVA_PACKAGE`...
这个“java小程序源代码集合”提供了多个用Java实现的小游戏和应用程序的源代码,是学习和理解Java编程的一个很好的资源。下面,我们将深入探讨这些源代码所涉及的关键知识点。 1. **Java聊天室代码**: - **网络...
以下是对Java编程的30条实用建议,旨在帮助提升代码质量,提高开发效率。 1. **遵循编码规范**:使用统一的命名规则,如驼峰命名法,保持代码整洁。 2. **注释清晰**:为关键代码段添加注释,解释功能和逻辑,方便...
Java猜拳游戏是一款基于Java编程语言开发的人机交互应用程序,主要功能是实现用户与计算机之间的石头、剪刀、布游戏。在这个游戏中,用户可以自定义自己的用户名,并与计算机进行一轮或多轮的猜拳比赛。计算机角色会...
在Java编程领域,统计源代码量是一项常见的任务,它...以上就是关于“统计源代码量源码”程序的一些核心知识点,它们涵盖了Java编程的基础、文件操作、异常处理等多个方面,对于理解并学习Java编程具有很好的参考价值。
然后,Fortify SCA 将应用规则库中的规则对代码进行分析,生成一个详细的报告,列出所有发现的问题,包括漏洞的位置、严重程度和可能的解决方案。这样,开发者可以有针对性地修复代码,提升软件的安全性。 在压缩包...
在Java编程中,源代码通常以`.java`为扩展名,经过Java编译器的处理,会被转化为字节码(`.class`文件),然后由Java虚拟机执行。 Java源代码的知识点涵盖了多个方面: 1. **基本语法**:Java源代码遵循特定的语法...
Java斗地主程序源代码是一种基于Java编程语言实现的桌面游戏,它允许用户在计算机上进行三人斗地主游戏。斗地主是一款在中国极其流行的扑克牌游戏,通过智慧与策略的较量,玩家需要与两位虚拟对手(或真实玩家)合作...
Java 编程规则是 Java 项目开发中的一系列规范和准则,旨在提高代码质量、可读性和可维护性。本文将从设计类和方法、编程原则等方面详细讲解 Java 编程规则。 设计类和方法 在设计类和方法时,应该遵循以下原则: ...
`Vector`提供动态数组的功能,但在现代Java编程中,通常推荐使用泛型集合如`ArrayList`,因为它们提供了更好的类型安全性和性能。 ### 知识点六:文件输入输出流 `import java.io.*;`表明源代码中可能使用了Java的...
**PHP与Java结合的安全编程与代码审计** 在现代软件开发中,PHP和Java常常被用于构建复杂的Web应用程序。这两种语言各有优势,PHP以其简洁高效在Web开发领域占据一席之地,而Java则以其强大的企业级功能和跨平台...
"一些java简单程序"这个主题,显然聚焦于帮助初学者理解Java编程基础。在这个压缩包中,"study path"可能是一个目录或者文件,它可能包含了学习Java的路径或者一系列逐步进阶的代码示例。 在Java编程中,初学者通常...
以下是一些关键的Java编程规范: 1. **概述** - **编程规范的必要性**:编程规范有助于降低代码阅读难度,提升团队间的沟通效率,使得代码风格统一,减少因个人习惯差异带来的问题。 - **规范文档的要求**:文档...
这些程序是学习Java编程和理解面向对象设计思想的理想实例。 首先,五子棋程序展示了如何实现一个基于用户交互的游戏。在Java中,这通常涉及到图形用户界面(GUI)的构建,可能使用Java Swing或JavaFX库。开发者...
标题中的“水费收取 java编的小程序含源代码和可执行文件”表明这是一个基于Java编程语言开发的应用程序,主要用于计算并收取超出标准用水量的水费。这个小程序设计了一个规则,即用户在每月有一定的免费用水指标,...