资源描述
JAVA编码规范,编码规范的重要性,一个软件的生命周期中,80%的花费在于维护。 几乎没有任何一个软件,在其整个生命同期中,均由最初的开发人员来维护。 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新代码。,包和引入,在多数Java源文件中,第一个非注释行是包语句行。在它之后可以跟引入语句。例如: package java.awt; import java.awt.peer.CanvasPeer,排版缩进,4个空格常被作为缩进排版的一个单位(一个制表符)。,行长度,尽量避免一行长度超过80个字符。注意:用于文档时应该使用更短的行长,长度一般不超过70个字符。,换行,当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之: 在一个逗号后面断开。 在一个操作符前面断开。 新的一行应该与上一行同一级别表达式的开头处对齐。 如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格。 以下是断开方法的一些例子:,注释,Java程序有两类注释,实现注释(implementation comments)和文档注释(document comments): 实现注释使用/*/和/界定的注释,用以注释代码或实现细节 。 文档注释(被称为“doc comments”)是Java独有的,并由/*/界定,描述代码的规范 。 文档注释可以通过javadoc工具转换成HTML文件。,实现注释:块注释,块注释通常用于提供对文件,方法,数据结构和算法的描述。 块注释被置于每个文件的开始处以及每个方法之前。 它们也可以被用于其他地方,比如方法的内部。 该注视应和其描述的代码有一样的缩进。 块注释可以以/ *-开头,这样就可以将之识别为一个代码块的开始,而不会重排它。,实现注释:单行注释,短注释可以显示一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该块注释(参见“块注释”)。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子:,实现注释:尾端注释,极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。 以下是一个Java代码中尾端注释的例子:,实现注释:行末注释,注释界定符“/”,可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉多行的代码段。以下是例子:,文档注释,文档注释描述Java的类、接口、构造器、方法,以及字段(field)。 每个文档注释都会被置于注释界定符/ */之中,一个注释对应一个类、接口或成员。 该注释应位于声明之前。,声明,推荐一行一个声明,因为这样以利于写注释。,每行声明变量的数量,布局,只在代码块的开始处声明变量(一个块是指任何被包含在大括号“”和“”中间的代码)。不要在首次用于该变量时才声明之,这会把注意力不集中的程序员搞糊涂,同时会妨碍代码在该作用域内的可移植性。 该规则的一个例外是for循环的索引变量 for (int i = 0; I maxLoops; i+) 避免声明的局部变量覆盖上一级声明的变量。,类和接口的声明,当编写类和接口时,应该遵守以下格式规则: 在方法名与其参数列表之前的左括号“(”间不要有空格。 左大括号“”位于声明语句同行的末尾。 右大括号“”另起一行,与相应的声明语句对齐,除非是一个空语句,“”应紧跟在“”之后。 方法与方法之间以空行分隔。,语句,简单语句:每行至多包含一条语句。 复合语句:复合语句是包含在大括号中的语句序列,形如“ 语句 ” 。 返回语句:一个带返回值的return语句不使用小括号“()”,除非它们以某种方式使返回值更显见。,if, if-else, if else-if else语句。if语句问题用“”和“”括起来,避免使用如下容易引起错误的格式 。 for语句(for Statements)。 while语句 。 do-while语句 。 switch语句。每当一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注释。 try-catch语句。,语句,空白,空行将逻辑相关的代码段分隔开,以提高可读性。 下列情况应总是使用两个空行: 一个源文件的两个片段(section)之间。 类声明和接口声明之间。 下列情况应该总是使用一个空行: 两个方法之间。 方法内的局部变量和方法的第一条语句之间。 一个方法内的两个逻辑段之间,用以提高可读性。,空格,注意:空格不应该置于方法名与其左括号之间,这将有助于区分关键字和方法调用。 空白应该位于参数列表中逗号的后面。 所有的二元运算符,除了“.”,应该使用空格将之与操作数分开。一元操作符和操作数之间不应该加空格,比如:负号(“-”),自增(“+”)和自减(“-”)。,命名规范:包,一个唯一包名的前缀总是全部小写的ASC字母并且是一个顶级域名,通常是com,gov,edu,mil,net,org,或1981年ISO 3166标准所指定的标识的国家的英文双字符代码。包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成来区分部门(department),项目(project),机器(machine),或注册名(login names)。 例如: com.sun.eng com.apple.quicktime.v2 edu.cmu.cs.bovik.cheese,命名规范:类,类名是一个名词,采用大小写混合方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被广泛的使用,如URL,HTML)。 例如: class Raster class ImageSprite class HTTPReader,命名规范:接口,interface RasterDelegate interface Storing,方法名是一个动词,采用大小写混合方式,第一个单词的首字母小写,其后单词的首字母大写。 例如: run() runFase() getBackground(),命名规范:方法,命名规范:变量,除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。 例如: char c int i float myWidth,实例变量,针对特定的实例所使用,实例变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一个临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整形;c,d,e,它们一般用于字符型。 int _employeeld String _name Customer _customer,常量,大小写规则和变量名相似,除了前面需要一个下划线隔开。尽量避免ANSI(国际标准协会)常量,容易引起错误。 例如: static final int MIN_WIDTH = 4 static final int MAX_WIDTH = 999 static final int GET_THE_CPU = 1 命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码。,编程惯例,引用类变量和类方法 : classMethod(); / OK AClass.classMethod(); / OK anObject.classMethod(); / AVOID!,常量,位于for循环中作为计数器值的数字常量,除了-1,0和1之外,不应被直接写入代码。 for (int i = 0; i 1; i+) ,变量赋值,避免在一个语句中给多个变量赋相同的值。它很难读懂。 int i,j; i = j = 3; 不要将赋值运算符用在容易与相等关系运算符混淆的地方: if (c+ = d+ != 0) / AVOID! (Java disallows) d = (a = b +c) + r; / AOVID! if (c+ = d+) != 0) / AVOID! (Java disallows) a = b + c; d = a + r; ,圆括号,一般而言,在含有多种运算符的表达式中使用括号来避免运算符优先级问题,是个好方法。即便运算符的优先级对你而言可能很清楚,但对其他人未必如此。你不能假设别的程序员和你一样清楚运算符的优先级。 if (a = b & c =d) / AVOID! if (a = b) & (c = d) / RIGHT,返回值,if (booleanException) return true; else return false; 应该代之以如下方法: return booleanException; 类似地: if (condition) return x; return y; 应该写为: return (condition ? x : y);,条件运算符“?”前的表达式,如果一个包含二元运算符表达式出现在三元运算符“ ? : ”之前,那么应该给表达式添上一对圆括号。例如: (x = 0) ? x : -x;,
展开阅读全文