苏州阊胥路北大青鸟 北大青鸟苏州阊胥路标准化校区
  青鸟学院·西祠讨论版·联系我们  
全国免费电话:400-888-1050
 
首页 | 新闻动态 | 学校介绍 | 课程详解 | 师资力量 | 学习园地 | 就业广场 | 开发技术 | 校区招聘
  在线报名 在线留言  
   
您的位置:首页 - JAVA技术  
Java代码规范  
2010-5-9  发布人:吴波  浏览次数::

前言:

为提高软件开发的质量和速度、增强代码的可读性、统一编程人员在实际工作中的代码编写风格,特此制定出本团队的代码规范,希望各位同仁认真阅读、严格遵守本规范。

本规范由ncs-网络事业部维护,相关意见与建议请发至liying@ncs-cyber.com.cn

规范等级说明

·         级别I:   默认级别,要求所有项目中的所有成员遵守。

·         级别II:  建议所有项目中的所有成员遵守。

·         级别III: 鼓励各个项目根据实际情况执行

 

1.格式与命名规范(Formating and Naming Conventions)

1.1  缩进

使用Tab缩进,而不是空格键--将缩进248字符的选择权留给阅读者。

1.2 换行

每行120字符--因为已是1024*768的年代。

if,for,while语句只有单句时,如果该句可能引起阅读混淆,需要用" {""}"括起来,否则可以省略。

//错误,需要使用花括号{}括起来
if (condition)
if(condition) doSomething();
else
doSomething();

1.3 命名规则

·         不允许使用汉语拼音命名 

·         遇到缩写如XML时,仅首字母大写,即loadXmlDocument()而不是loadXMLDocument()

·         Package名必须全部小写,尽量使用单个单词

·         为了基于接口编程,不采用首字母为I或加上IF后缀的命名方式,如IBookDao,BookDaoIF

·         页面部件名建议命名为:btnOKlblNameokBtnnameLbl( II )
其中btnlbl缩写代表按钮(Button)、标签(Label)

·         局部变量及输入参数不要与类成员变量同名(get/set方法与构造函数除外)

·         方法的名字的第1个单词应以小写字母开头,后面的单词则建议用大写字母开头。

·         常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则建议用下划线来分割这些单词

1.4 声明

·         修饰符应该按照如下顺序排列:public, protected, private, abstract, static, final, transient, volatile, synchronized, native, strictfp

·         类与接口的声明顺序(可用Eclipsesource->sort members功能自动排列): 

·         静态成员变量 / Static Fields

·         静态初始化块 / Static Initializers

·         成员变量 / Fields

·         初始化块 / Initializers

·         构造器 / Constructors

·         静态成员方法 / Static Methods

·         成员方法 / Methods

·         重载自Object的方法如toString(), hashCode() main方法

·         类型(内部类) / Types(Inner Classes)

·         同等的类型,按public, protected, private的顺序排列。

2.注释规范(Document Convertions)

2.1 注释的格式

·         注释中的第一个句子要以(英文)句号、问号或者感叹号结束。Javadoc生成工具会将注释中的第一个句子放在方法汇总表和索引中。

·         为了在JavaDocIDE中能快速链接跳转到相关联的类与方法,尽量多的使用@see xxx.MyClass@see xx.MyClass#find(String)

·         Class必须以@author 作者名声明作者,不需要声明@version@date,由版本管理系统保留此信息。( II )

2.2 注释的内容

2.2.1    可精简的注释内容

注释中的每一个单词都要有其不可缺少的意义,注释里不写"@param name -名字"这样的废话。

如果该注释是废话,连同标签删掉它,而不是自动生成一堆空的标签,如空的@param name,空的@return

2.2.2    推荐的注释内容

·         对于已知的Bug需要声明。( II )

·         在本函数中抛出的unchecked exception尽量用@throws说明。( II )

2.2.3    Null规约

如果方法允许Null作为参数,或者允许返回值为Null,必须在JavaDoc中说明。

如果没有说明,方法的调用者不允许使用Null作为参数,并认为返回值是Null Safe的。

/**
 *
获取对象.
 *
 * @ return the object to found or null if not found.
 */
Object get(Integer id){
...
}

2.2.4    特殊代码注释

·         代码质量不好但能正常运行,或者还没有实现的代码用//TODO: //XXX:声明 

·         存在错误隐患的代码用//FIXME:声明

3.编程规范(Programming Conventions)

3.1基本规范

1.  当面对不可知的调用者时,方法需要对输入参数进行校验,如不符合抛出IllegalArgumentException,建议使用SpringAssert系列函数。 

2.  隐藏工具类的构造器,确保只有static方法和变量的类不能被构造实例。

3.  变量,参数和返回值定义尽量基于接口而不是具体实现类,如Map map = new HashMap();

4.  代码中不能使用System.out.println()e.printStackTrace(),必须使用logger打印信息。

3.2 异常处理

1.  重新抛出的异常必须保留原来的异常,即throw new NewException("message", e); 而不能写成throw new NewException("message")

2.  在所有异常被捕获且没有重新抛出的地方必须写日志。 

3.  如果属于正常异常的空异常处理块必须注释说明原因,否则不允许空的catch块。

4.    框架尽量捕获低级异常,并封装成高级异常重新抛出,隐藏低级异常的细节。(III)

3.3.2 方法度量

·         方法(构造器)参数在5个以内 ( II )
太多的方法(构造器)参数影响代码可读性。考虑用值对象代替这些参数或重新设计。

·         方法长度150行以内 ( II )

·         CC 度量值不大于10(III )
解释:CC(CyclomaticComplexity)圈复杂度指一个方法的独立路径的数量,可以用一个方法内if,while,do,for,catch,switch,case,?:语句与&&,||操作符的总个数来度量。

·         NPath度量值不大于200 ( III )
解释:NPath度量值表示一个方法内可能的执行路径的条数。  

3.3.3 其他度量

·         布尔表达式中的布尔运算符(&&,||)的个数不超过3(III) 

·         if语句的嵌套层数3层以内(II)

·         文件长度2000行以内(II)

·         匿名内部类20行以内 (II)
太长的匿名内部类影响代码可读性,建议重构为命名的(普通)内部类。

3.4 JDK5.0

1.  重载方法必须使用@Override,可避免父类方法改变时导致重载函数失效。

2.  不需要关心的warning信息用@SuppressWarnings("unused"), @SuppressWarnings("unchecked"), @SuppressWarnings("serial") 注释。

4.java代码formatter

将“formatter-profile.xml”文件拷到Eclipse安装目录下

打开EclipseWindows->Preferences->Java->Code Style->formatter中,点击“import”,选择“formatter-profile.xml

在代码中按“Ctrl+Shirt+F”格式化当前代码。

 

 

 
上一篇:eclipse快捷键
下一篇:md5加密解密
 
设为首页 | 加入收藏 | 联系我们 | 联系站长 | 友情链接
报名咨询:0512-65566661 65566662   备案许可证号:苏ICP备09076008号
地址:苏州市阊胥路483号创元科技园6号楼1层(干将西路友通数码港向北100米)
交通路线:6、7、7路区间、64、70、88、262、300、303、304、307、318、332、333、333路龙池专线、
522、800、921、932、949.(小日晖桥北站)
 
在线客服
在线客服系统