命名规范
使用匈牙利表示法
Package 的命名
Package 的名字应该都是由一个小写单词组成。
package com.neu.util
Class 的命名
Class的名字必须由大写字母开头而其他字母都小写的单词组成,对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。
public class ThisAClassName{}
Class 变量的命名
变量的名字必须用一个小写字母开头。后面的单词用大写字母开头
userName , thisAClassMethod
Static Final 变量的命名
static Final 变量的名字应该都大写,并且指出完整含义。
/**
*DBConfig PATH
**/
public static final String
DB_CONFIG_FILE_PATH ="com.neu.etrain.dbconfig";
参数的命名
参数的名字必须和变量的命名规范一致。
数组的命名
数组应该总是用下面的方式来命名:
byte[] buffer;而不是:byte buffer[];
方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
SetCounter(int size)
{ this.size = size; }
注释规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。
// 注释一行
/* ...... */ 注释若干行
/** ...... */ 注释若干行,并写入 javadoc 文档
注释要简单明了。
String userName = null; //用户名
边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。
在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。
对代码的注释应放在其上方相邻位置,不可放在下面。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。
变量、常量的注释应放在其上方相邻位置或右方。
全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
在每个源文件的头部要有必要的注释信息.
包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。
/**
* Copy Right Information : Neusoft IIT
* Project : eTrain
* JDK version used : jdk1.3.1
* Comments : config path
* Version : 1.01
* Modification history :2003.5.1
* Sr Date Modified By Why & What is modified
* 1. 2003.5.2 Kevin Gao new
**/
在每个函数或过程的前面要有必要的注释信息.
包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等
/**
* Description :checkout 提款
* @param Hashtable cart info
* @param OrderBean order info
* @return String
*/
public String checkout(Hashtable htCart,
OrderBean orderBean)
throws Exception{
}
javadoc注释标签语法
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
代码编写格式
代码样式
代码应该用 unix 的格式,而不是 windows 的(比如:回车变成回车+换行)
文档化
必须用 javadoc 来为类生成文档。不仅因为它是标准,这也是被各种 java 编译器都认可的方法。使用 @author 标记是不被推荐的,因为代码不应该是被个人拥有的。
缩进
缩进采用Tab字符. 良好的缩进可以帮助区分代码的层次
{} 对
{} 中的语句应该单独作为一行. 例如, 下面的第1行是错误的, 第2行是正确的:
if (i>0)
{ i ++ }// 错误,
{ 和 }在同一行
if (i>0)
{ i ++ ;
}// 正确,
{ 单独作为一行 }
{语句永远单独作为一行.
如果 } 语句应该缩进到与其相对应的 { 那一行相对齐的位置。
括号
左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出现空格. 下面的例子说明括号和空格的错误及正确使用:
CallProc( AParameter ); // 错误
CallProc(AParameter); // 正确
不要在语句中使用无意义的括号. 括号只应该为达到某种目的而出现在源代码中。下面的例子说明错误和正确的用法:
if ((I) = 42) { // 错误 - 括号毫无意义
if (I == 42) or (J == 42) then // 正确 - 的确需要括号
在复杂语句中尽量采用括号,免除对运算符优先级的判断
if((!a.equals("aaa"))&&(!b.equals("bbb"))
可读性
避免使用不易理解的数字,用有意义的标识来替代。
此时可以在modle类,action,或者util帮助类中定义常量并添加注释。主要看作用范围决定添加在何处
不要使用难懂的技巧性很高的语句。
宁可多写几行代码,不考虑效率
源程序中关系较为紧密的代码应尽可能相邻。
排版规范
关键词和操作符之间加适当的空格
相对独立的程序块与块之间加空行
较长的语句、表达式等要分成多行书写
划分出的新行要进行适应的缩进,使排版整齐,语句可读
循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分
若函数或过程中的参数较长,则要进行适当的划分
不允许把多个短语句写在一行中,即一行只写一条语句
函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格
编程技巧
防止 String sss = new String("ssss"),正确的为 String sss = "sss";
对于对象变量,最好在定义时赋初始值 例如 User user = null;
在进行循环操作时尽量减少运算
int size = userList.size();
int tag = 0;
while(0<size)
利用StringBuffer 来代替String 的加操作
对于自增减操作书写格式为 i += 3;不必写成 i = i+3;
等号两边留有空格。
提倡break的使用,当循环得到结果,应该及时终止无畏的循环操作
while(0<size){ if(user.name.equals("luck"){ ..... breck; }
}
当程序段得到正确结果时,不必等到代码结束才返回
if(user == null)
{ ..... return; }
else{ }
集合变量定义遵循如下规律,能在名称上体现它的基本类型
数组 xxxxArray
List xxxxList
在多个if分支,并且判断条件是整数时,建议使用switch语句来实现
在输出日志时,用logging而不是println
小心对待多态问题,只有在确定方法内部实现一致,仅仅是传入参数不同时才可使用同一方法名称
例如 按照id取得User
getUser(Long id)
getUser(User user)
如果第二个内部还判断了orgId,则应该变方法名称getUserByIdAndOrg
方法类与属性定义上,尽量做到明尽其意,如上面getUserByIdAndOrg
使用匈牙利表示法
Package 的命名
Package 的名字应该都是由一个小写单词组成。
package com.neu.util
Class 的命名
Class的名字必须由大写字母开头而其他字母都小写的单词组成,对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。
public class ThisAClassName{}
Class 变量的命名
变量的名字必须用一个小写字母开头。后面的单词用大写字母开头
userName , thisAClassMethod
Static Final 变量的命名
static Final 变量的名字应该都大写,并且指出完整含义。
/**
*DBConfig PATH
**/
public static final String
DB_CONFIG_FILE_PATH ="com.neu.etrain.dbconfig";
参数的命名
参数的名字必须和变量的命名规范一致。
数组的命名
数组应该总是用下面的方式来命名:
byte[] buffer;而不是:byte buffer[];
方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
SetCounter(int size)
{ this.size = size; }
注释规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。
// 注释一行
/* ...... */ 注释若干行
/** ...... */ 注释若干行,并写入 javadoc 文档
注释要简单明了。
String userName = null; //用户名
边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。
在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。
对代码的注释应放在其上方相邻位置,不可放在下面。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。
变量、常量的注释应放在其上方相邻位置或右方。
全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
在每个源文件的头部要有必要的注释信息.
包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。
/**
* Copy Right Information : Neusoft IIT
* Project : eTrain
* JDK version used : jdk1.3.1
* Comments : config path
* Version : 1.01
* Modification history :2003.5.1
* Sr Date Modified By Why & What is modified
* 1. 2003.5.2 Kevin Gao new
**/
在每个函数或过程的前面要有必要的注释信息.
包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等
/**
* Description :checkout 提款
* @param Hashtable cart info
* @param OrderBean order info
* @return String
*/
public String checkout(Hashtable htCart,
OrderBean orderBean)
throws Exception{
}
javadoc注释标签语法
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
代码编写格式
代码样式
代码应该用 unix 的格式,而不是 windows 的(比如:回车变成回车+换行)
文档化
必须用 javadoc 来为类生成文档。不仅因为它是标准,这也是被各种 java 编译器都认可的方法。使用 @author 标记是不被推荐的,因为代码不应该是被个人拥有的。
缩进
缩进采用Tab字符. 良好的缩进可以帮助区分代码的层次
{} 对
{} 中的语句应该单独作为一行. 例如, 下面的第1行是错误的, 第2行是正确的:
if (i>0)
{ i ++ }// 错误,
{ 和 }在同一行
if (i>0)
{ i ++ ;
}// 正确,
{ 单独作为一行 }
{语句永远单独作为一行.
如果 } 语句应该缩进到与其相对应的 { 那一行相对齐的位置。
括号
左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出现空格. 下面的例子说明括号和空格的错误及正确使用:
CallProc( AParameter ); // 错误
CallProc(AParameter); // 正确
不要在语句中使用无意义的括号. 括号只应该为达到某种目的而出现在源代码中。下面的例子说明错误和正确的用法:
if ((I) = 42) { // 错误 - 括号毫无意义
if (I == 42) or (J == 42) then // 正确 - 的确需要括号
在复杂语句中尽量采用括号,免除对运算符优先级的判断
if((!a.equals("aaa"))&&(!b.equals("bbb"))
可读性
避免使用不易理解的数字,用有意义的标识来替代。
此时可以在modle类,action,或者util帮助类中定义常量并添加注释。主要看作用范围决定添加在何处
不要使用难懂的技巧性很高的语句。
宁可多写几行代码,不考虑效率
源程序中关系较为紧密的代码应尽可能相邻。
排版规范
关键词和操作符之间加适当的空格
相对独立的程序块与块之间加空行
较长的语句、表达式等要分成多行书写
划分出的新行要进行适应的缩进,使排版整齐,语句可读
循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分
若函数或过程中的参数较长,则要进行适当的划分
不允许把多个短语句写在一行中,即一行只写一条语句
函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格
编程技巧
防止 String sss = new String("ssss"),正确的为 String sss = "sss";
对于对象变量,最好在定义时赋初始值 例如 User user = null;
在进行循环操作时尽量减少运算
int size = userList.size();
int tag = 0;
while(0<size)
利用StringBuffer 来代替String 的加操作
对于自增减操作书写格式为 i += 3;不必写成 i = i+3;
等号两边留有空格。
提倡break的使用,当循环得到结果,应该及时终止无畏的循环操作
while(0<size){ if(user.name.equals("luck"){ ..... breck; }
}
当程序段得到正确结果时,不必等到代码结束才返回
if(user == null)
{ ..... return; }
else{ }
集合变量定义遵循如下规律,能在名称上体现它的基本类型
数组 xxxxArray
List xxxxList
在多个if分支,并且判断条件是整数时,建议使用switch语句来实现
在输出日志时,用logging而不是println
小心对待多态问题,只有在确定方法内部实现一致,仅仅是传入参数不同时才可使用同一方法名称
例如 按照id取得User
getUser(Long id)
getUser(User user)
如果第二个内部还判断了orgId,则应该变方法名称getUserByIdAndOrg
方法类与属性定义上,尽量做到明尽其意,如上面getUserByIdAndOrg