的代码难以阅读和理解,所以应使用大量的空白空间来清晰地画出方法、注释、代码区和表达式的轮廓。
使用单个空格分隔: 在右边的括号“)”或大括号“”与任何关键字之间要有一个空格;在任何关键字与大括号“” 或 左边的括号“”之间要有一个空格;在一个右括号“”与左边的大括号“”之间要有一个空格。
page 10 for.…. … while.…. … do. … .while.… switch.…. … if.…. … else.if.…. … else. … try. … catch.…. … finally. … page 11 在任何二元操作符(除了那些被“.”限定的操作符、进行的表达式、直接跟着操作数的表达式)之间加入空格。
double length Math.sqrtx x y y double xNorm length gt 0.0 x / length : x使用空行分隔: 在方法实现的每个逻辑区使用空行: void handleMessageMessage message DataInput content message.getDataInput int messageType content.readInt switch messageType case WARNING: … do some stuff here … break case ERROR: … do some stuff here … break default: … do some stuff here … break 在类或接口中的成员定义的地方使用空行: public class Foo / Defines an inner class. / class InnerFoo … page 12 田苗苗译 / The Bar associated with this Foo. / private Bar bar / Construct a Foo with the specified Bar. / FooBar bar this.bar bar 在源文件中每一个类和接口定义的地方使用空行: / … file description … / package com.company.xyz / … interface description … / interface FooInterface … / … class description … / public class Foo implements FooInterface … 8.不要使用 tab 键 许多开发人员使用 tab 键来缩进和排列源代码,但他们没有意识到 tab 键的字符在不同的环境中会发生变化。
在原始编译环境中浏览时,代码能够呈现出正确的格式编排。
但当代码被转移到一个 tab 键字符有差异的编辑环境中时,将出现无格式编排的和不可读的情况。
page 13★ 为了避免这个问题,常用空格代替 tab 键来缩进和排列源代码。
这个操作很简单,可以通过用空格键代替 tab 键或者通过配置编辑程序来代替 tab 键的实现。
一些编译程序还提供了一个“智能的”缩进功能。
但在需要使用 tab 键时,你要使这个功能无效。
(见概要中规你的团队应该设置一个共用的缩进尺寸,使它对所有的 Java 程序都保持一致。
则 5)page 14 3. 命 名 的 约 定 下面的这些命名约定与 Sun 公司使用的 Jsdk 命名规则是一致的。
9.使用有含义的名字 当命名一个类、变量、方法、或常量时,应使用那些,对最终会阅读你的程序的其他程序员来说有含义的名字。
使用有含义的词来生成名字,避免使用单个字符或一般的名字。
单个字符或一般的名字看不出名字定义的意图。
在下面的程序中,变量“a”与常量“65”的意图是不明确的。
if a lt 65 // What property does ‘a’ describe y 65 – a // What is being calculated here else y 0 使用有含义的名字,程序会更容易理解: if age lt RETIREMENT_AGE yearsToRetirement RETIREMENT_AGE – age else yearsToRetirement 0 这个规则的唯一例外与临时变量有关,这些临时变量的上下文提供了足够信息来确定它们的意图。
例如,在一个循环中被用做计数器或下标的变量: page 15 (时兵译) for int i 0 i lt numberofStudents i enrollStudenti 一些变量的含义和使用场景的频繁出现会足以形成一定的标准。
( 为 获 得 更 多 的 信 息 , 请 参 看 规 则 28)10. 使 用 熟 悉 的 名 字 命 名 用对象领域中已存在的术语进行命名。
如果你的用户习惯将顾客称为customers那 我 们 就 用 customer 为 类 命 名 , 而 不 是 client。
许 多 软 件 开 发 者经常会犯这类错误:他们创造出新的或通用的术语来为概念命名。
但此时在目标产业或目标领域里,这个概念已经有令人满意的术语了。
11. 起 过 长 名 字 的 问 题 一 个 对 象 的 名 字 必 须 能 够 充 分 地 描 绘 它 要 表 达 的 意 思 。
如 果 一 个 类 ,接 口 ,变量或方法有一个过长的名字,那么这个实体可能会表达的意思就太多了。
我们首先要考虑的是它的设计或意图,而不是简单的只给这个实体一个只能传递少量意义的名字。
一个实体的重构也许会产生新的类、接口、方法或变量 。
他 们 会 具 有 更 集 中 、 更 具 有 表 达 意 义 并 且 更 简 单 的 名 字 。
page 1612. 加 入 元 音 字 母 如果多个有含义的名字都被简化成相同的缩拼词,那么,这些缩拼词就会减少你代码的可读性并引起歧义。
不要试图通过删除元音字母来缩短名字。
如果多个有意义的名字都被简化成相同辅音字母的集合,这样也会减弱你代码的可读性并引起歧义。
一般的读者都会理解下面这段程序中名字要表达的意义。
public Message appendSignatureMessage message String signature … 但下面这种简化的形式就很难让人理解了。
public Msg appndSgntrMsg msg String sgntr … 如果你删除元音字母仅仅是为了缩短一个很长的名字,那么你就应该考虑 (一 下 原 来 的 名 字 是 否 贴 切 。
详 见 11)13. 将 缩 拼 词 里 的 首 字 母 大 写 用大写字母作为词的分割符有助于消除名字的歧义性,当一个缩拼词后紧跟另一个缩拼词的时候,这种方法就显得尤为重要了: setDSTOffset setDstOffset loadXMLDocument loadXmlDocument page 17 这条规则不适用于: ( 一个常量名字中的缩拼词,因为这些名字里只包括大写字母。
见规则 31) static final String XML_DOCUMENT “ text/XML” 出现在一个方法,变量或参数开头的缩拼词,因为这些名字总要以小 写 字 母 开 头 。
见 规 则 22 和 25: private Document xmlDocument14. 不 要 使 用 那 些 仅 在 字 母 大 小 写 上 有 区 别 的 名 字 但 JAVA 编 译 器 能 够 识 别 那 些 仅 在 字 母 大 小 写 上 有 区 别 的 名 字 , 阅 读 者 可 能注意不到这种区别。
例 如 , 一 个 名 为 theSQLInputStream 的 变 量 不 能 和 一 个 名 为thesqlInputStream 的 变 量 出 现 在 同 一 作 用 域 中 。
如 果 两 个 名 字 出 现 在 同 一 作用域中,那么,当人们从视觉角度阅读或理解这段代码的时候,每一个变量都会有效地屏蔽另一个。
包的命名15. 用 你 的 组 织 的 网 络 域 名 的 小 写 、 逆 序 形 式 作 为 包 的 名 字 的 根 修 饰 符 。
这 任何分配给其他组织的包都应该包含本组织的域名, 个名字是以小写字母的 逆 序 形 式 表 示 。
例 如 ,一 个 名 为 ROGUE WAVE SOFTWARE 的 公 司 ,它 的 网 址 为 :roguewave.com.该 公 司 要 发 布 一 个 叫 做 sever 的 包 , 那 么 , ROGUE WAVE 就 应 该将 该 包 命 名 为 com.roguewave.server。
page 18) 冯 卓 楠 译 ) ( (★ SUN 公司对于使用 java 和 javax 做为包的名字做了严格的限制。
以 java 命名的包仅可以被 Java 开发商使用,以提供与标准 Java 类库一致的实现。
SUN 公司保留 javax 的使用,用来命名它自己的 Java 扩展包。
16、使用单一的、小写字母的单词作为每个包的根目录名。
一个包名被修饰的部分应由单一的、小写字母的单词组成,这个单词应能清晰地捕捉到这个包的意图和效用。
包名由一个有意义的缩写组成。
可接受的缩写的范例如 Java 包中的java.io 和 j
上一篇:
使用BusyBox制作linux根文件系统
下一篇:
追求••挣扎•幻灭——祥子的悲剧命运Word论文|Word下载