Java编程的标准之JAVA编程规范(3)

2018-12-17 15:12

1. 控制结构。说明每个控制结构,例如比较语句和循环。你无须读完

整个控制结构内的代码才判断它的功能,而仅需看看紧靠它之前的一到两行注释即可。 2. 代码做了些什么以及为什么这样做。通常你常能看懂一段代码做了

什么,但对于那些不明显的代码,你很少能判断出它为什么要那样

做。例如,看完一行代码,你很容易地就可以断定它是在定单总额上打了 5% 的折扣。这很容易。不容易的是为什么要打这个折扣。显然,肯定有一条商业法则说应打折扣,那么在代码中至少应该提到那条商业法则,这样才能使其他开发者理解你的代码为什么会是这样。

3. 局部变量。虽然我们在第 4 章将仔细讨论这一点,在一个成员函数

内定义的每一个局部变量都应在它代码的所在行声明,并且应采用一个行内注释说明它的用法。

4. 难或复杂的代码。若发现不能或者没有时间重写代码,那么应将成

员函数中的复杂代码详细地注释出来。一般性的经验法则是,如果代码并非显而易见的,则应说明。

5. 处理顺序。如果代码中有的语句必须在一个特定的顺序下执行,则

应保证将这一点注释出来 [AMB98]。没有比下面更糟糕的事了:你对一段代码做一点简单的改动,却发现它不工作,于是花了几个小时查找问题,最后发现原来是搞错了代码的执行顺序。

在闭括号后加上注释。常常会发现你的控制结构内套了一个控制结构,而在这个控制结构内还套了一个控制结构。虽然应该尽量避免写出这样的代码,但有时你发现最好还是要这样写。问题是闭括号 } 应该属于哪一个控制结构这一点就变得混淆了。一个好消息是,有一些编辑器支持一种特性:当选用了一个开括号后,它会自动地使相应得闭括号高亮显示;一个坏消息是,并非所有的编辑器都支持这种属性。我发现通过将类似 //end if,//end for,//end switch,&这样的注释加在闭括号所在行的行后,可以使代码更易理解。

编写清晰整洁的代码的技巧

这一部分讲述几个技巧,这些技巧有助于区分专业软件开发者和蹩脚代码编写者。这些技巧是:

? 给代码加上注释 ? 给代码分段 ? 使用空白

? 遵循 30 秒条规则 ? 说明消息发送的顺序 ? 写短小单独的命令行

给代码加上注释

记住:如果你的代码不值得注释,那么它就不值得保留 [NAG95]。当正确地使用了本文提到的注释标准和方针,就可以大幅度地提高代码质量。

让代码分段/缩进

一种提高代码可读性的方法是给代码分段,换句话说,就是在代码块内让代码缩进。所有在括号 { 和 } 之内的代码,构成一个块。基本思想是,块内的代码都应统一地缩进去一个单位。

Java 的约定似乎是开括号放在块的所有者所在行的后面,闭括号应缩进一级。在 [LAF97] 指出的很重要的一点是,你所在的机构应选取一个缩进风格并始终使用这种风格。采用与你的 Java 开发环境所生成的代码一样的缩进风格。

在代码中使用空白。 在 Java 代码中加入几个空行,也叫空白,将

代码分为一些小的、容易理解的部分,可以使它更加可读。[VIS96] 建议采用一个空行来分隔代码的逻辑组,例如控制结构,采用两个空行来分隔成员函数定义。没有空白的代码很难读,很难理解。

遵循 30 秒条法则

其他的程序员应能在少于 30 秒钟的时间内完全理解你的成员函数,理解它做什么,为什么这样做,它是怎样做的。如果他们做不到,说明你的代码太难维护,应加以改进。30 秒钟,明明白白。 一个好的经验法则是:如果一个成员函数一个屏幕装不下,那么它就很可能太长了。

写短小单独的命令行

每一行代码只做一件事情。在依赖于穿孔卡片的计算机发展的早期,想让一行代码完成尽量多的功能的想法是可以理解的。若想在一行里做多件事情,就会使代码难于理解。为什么要这样呢?我们应使代码尽量容易理解,从而更容易维护和改进。正如同一个成员函数应该并且只能做一件事一样,一行代码也只应做一件事情。

此外,应让代码在一个屏幕内可见 [VIS96]。 也不应向右滚动编辑窗口来读取一整行代码,包括含有行内注释语句的代码。

说明运行顺序

提高代码可读性的一个相当简单的方法是使用圆括号 (parenthesis,又叫“round brackets”) 来说明 Java 代码运行的准确顺序 [NAG95];[AMB98]。如果为了理解你的源码而必须了解编程语言的操作顺序,那么这说明源码中一定有什么重要的东西做的不对。 这大多是在 AND 或者 OR 其它几个比较关系处产生的逻辑比较上的问题。注意:如果你象前文所建议的那样,采用短小单独的命令行,那么就不会产生这个问题。

字段标准 (字段/属性)

field 这个词在这里指的是字段,Beans Development Kit (BDK) 叫它“属性” [DES97]。字段是说明一个对象或者一个类的一段数据。字段可以是象字符串或者浮点数这样的基本数据类型,也可以是一个对象,例如一个消费者或者一个银行帐户。

命名字段

应采用完整的英文描述符来命名字段 [GOS96],[AMB98],以便使字段所表达的意思一目了然。象数组或者矢量这样是集合的字段,命名时应使用复数来表示它们代表多值。 示例:

firstName zipCode unitPrice discountRate orderItems

命名组件(部件)

应采用完整的英文描述符命名组件(接口部件),名字的后缀是组件类型名。这让你容易区分一个组件的目的和它的类型,容易在一个表里找到各个组件(许多可视化的编程环境在一个 Applet 程序

或者一个应用程序中提供了一个所有组件的列表。如果所有名字都是类似于 button1, button2, & 这样的话,很容易混淆)。 示例:

okButton customerList fileMenu newFileMenuItem

命名组件的另一种方法。匈牙利符号

“匈牙利符号” [MCO93] 是基于字段应按照以下方法命名的原则:xEeeeeeEeeeee,其中 x 指组件类型,EeeeeEeeeee 是完整的英文描述符。 示例:

pbOk lbCustomer mFile miNewFile

这个方法的主要优点是,这是一个通用于 C++ 代码中的工业标准,已经有许多人在遵守它。此外,开发者能快速地从变量的名字上来判断它的类型和用法。主要的缺点是,当有许多同一类型的部件时,前缀符号变得很笨重;而且,违背了采用完整的英文描述符的命名约定。

命名组件的另一种方法。匈牙利符号后缀

这基本上是其他两种方式的组合,生成的名字如 okPb,

customerLb,fileM 和 newFileMi。 主要优点是组件名说明了组件类型,并且同一类的组件不在一起,而按照字母顺序排列。主要的缺点仍是未采用完整的英文描述符,它偏离了规范,使标准难以被记住。

设定组件命名标准。无论使用哪种约定,都要生成一个“正式”部件

名列表。 例如,当命名按钮时,是用 Button 或是 PushButton,

b 或是 pb?生成一个列表,让组里的每一个 Java 开发者都得到它。

命名常量

Java 中,常量,即不变的值,一般用类的静态常量字段来实现。公认的约定是,采用完整的英文大写单词,在词与词之间用下划线连接 [GOS96]。 示例:

MINIMUM_BALANCE MAX_VALUE

DEFAULT_START_DATE

这个约定的主要优点是,它有助于区分常量和变量。在本文后面的章节中我们将看到,如果用定义获取函数返回常量值的方法来取代定义常量,代码的可适应性和可维护性都会大大提高。

命名集合

一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。命名应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写。 示例:

customers orderItems aliases

这种约定的主要优点是有助于区分表示复数值(集合)和单值(非集合)的字段。

字段可见性

当字段被声明为 protected 类型时,子类中的成员函数可能会直接访问它,有效地提高了类内层次结构的耦合性。这使类更难维护和加强,所以应该尽量避免。字段不应被直接访问,而应采用存取成员函数(参见下文)访问。


Java编程的标准之JAVA编程规范(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:用友通实务练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: