您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Java程序开发规范
Java编程规范注:本规范适用于北京工业大学教育部数字社区工程研究中心进行java开发,还待进一步完善。日期操作版本作者2009-4-3起草文件V1.0赵忠诚Java程序开发规范第1章绪论1.1目的:本规范目的是为了使本组织能以标准、规范、统一的编程风格进行Java代码的开发工作。提高程序的可读性、可修改性和可维护性,方便团队的交流。本规范参考了:CodeConventionsfortheJavaTMProgrammingLanguage高质量C++编程1.2范围:本规范适用于教育部数字社区工程研究中心使用Java开发团队所有成员,进行产品开发、维护以及升级等编程操作。1.3概要说明:在这里引用文献1来说明代码规范的重要性:一个软件的生命周期中,有80%都在进行维护;很难有软件在整个生命周期中,都是由原来的作者进行维护的;编码规范提高了软件的可读性,并且帮助软件工程师更加快速彻底地理解新的代码;要想把你的源代码作为产品来发布,就需要保证它像你创作的其他作品那样被很好地封装,并且清理干净了。针对我们学校环境来说,师兄师姐毕业,师弟师妹入学属于软件工程师的不断更新,如果我们没有统一的完成的编程规范,每个人按照自己的编程风格和编程方法进行程序开发,在毕业之后很少有人能读懂他的程序,对于后期的维护来说是一件非常头疼的问题,所以我们非常有必要总结出一套适合我们自己的Java开发规范。1.4重要说明:本规范为内部共享资源,版权属于教育部数字工程研究中心,如果现在或者以后有好的建议可以直接在该文件中进行添加和修改。第2章代码整体组织和风格这里所说的代码的整体组织和风格是针对一个文件而言,一个文件应该是由被空行分隔开的代码块所组成,并且每个块被特定的注释标识出来。每个文件不应该超过2000行(包括注释说明)。2.1Java源文件Java源文件必须包含一下几个部分(按照从上到下的顺序说明):版权说明、包和引用语句、类/接口描述以及版本信息、类方法以及变量声明和实现。版权信息,所有的源文件都应该由列出了类名,日期和版权信息的C-style的注释开始,采用如下格式作为版权信息:/***@{#}S.javaCreatedon2009-4-6**CopyRight(c)2009BJUT,BeiJing.*Allrightreserved.*/包和引用语句,大多数Java源文件的第一个非注释代码行都是包定义语句,当让可以不写包定义语句,但是在这里强烈建议写上包定义语句(如果你采用eclipse等开发环境写不写就由不得你了,除非你在它自动生成之后将其删掉),在之后就是引用语句,如果引用的话当然没有引用语句。做如下规定:1)包信息和引用语句之间要与一个空行2)引用语句之间不在同一个包中的引用也要有一个空行例如:packageedu.bjut.bjwater.checkrules.action;importjava.text.NumberFormat;importjava.text.SimpleDateFormat;importjava.util.*;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSession;importedu.bjut.bjwater.pub.*;类/接口描述以及版本信息/***@Package:src.test*@Description:TODO(用一句话描述该文件做什么)*@author:yan*@date:2009-4-6*@version:V1.0**@version@date@author@modify*------------------------------------------------*修改之后版本修改日期修改者修改内容*/变量声明,按照文献1中所说,在声明变量时,首先声明static变量然后再声明类成员变量,声明顺序为,首先是public的类变量,然后是protected的,接下来是包级的(没有访问修饰符),最后是private的。例:/**something......*/publicstaticStringstr=“test”;…………………/***Setthecharactersetforthefile.*/privatestaticCharsetcharset=Charset.forName(ISO-8859-15);/**something......*/publicStringstr=“test”;/***Thecharacterbufferreference.*/privateCharBufferindexFile;变量声明同时也要添加相应注释,注释这个变量的功能,如果是一个较复杂的数据结构形式,将其存贮的格式也表示出来,方便理解程序同时也方便其他人的程序调用。构造函数和方法:构造函数也是方法但是它没有返回值,本规范规定,想写构造函数在写其他的方法。方法也要加上注释,说明这个方法实现的功能等信息,例如/***@Title:main*@Description:TODO方法功能描述*@paramargs*@author:yan2009-4-6*@version:**@version@date@author@modify*------------------------------------------------*修改之后版本修改日期修改者修改内容*/方法的参数以及返回类型一定要详细填写,参数包括参数要求的类型,以及参数的说明;返回值包括返回的类型以及返回之后的数据结构等信息。2.2缩进缩进使得程序看起来清晰和结构化,本规范规定采用4个空格作为缩进单位。eclipse默认的TAB缩进为4个空格,不同的IDE工具可能不太一样,需要进行设置TAB代表的空格。但是如果程序层次缩进过多的话使得程序易读性差,在遇到这种情况时应将部分子功能提取出来作为单独的方法。2.3函数体长度前面已经提到整个文件不应该超过2000行,而作为函数体也有相应的要求,为了方便程序阅读和理解,函数体应该尽量控制在150行左右(只是看到有人这样写,具体多少合适我也不是很清楚)。避免出现大类和大方法,对于程序的维护是相当困难的。所以我们提倡小方法以及方法的重用性操作。2.4行宽本规范规定每一行的最长宽度为80字符,因为超过了这个宽度之后有些工具不能很好的处理,就算是能够处理,我们也不要超过这个宽度,这也是程序可读性的一个要求。2.5换行换行在编程的时候是避免不了的,所以对于换行文献1中提出了一些基本的要求。在一个“,”后面断行在一个操作符前面换行,操作符放在新行之首(确保突出操作符)在较高级别处换行,不要在较低级别处换行if表达式尽量使用8个空格换行操作,因为4个空格换行操作使得函数体不容易辨认。拆分出的新行要适当进行缩进,使得排版整齐,可读性强。例:someMethod(longExpression1,longExpression2,longExpression3,longExpression4,longExpression5);//DON'TUSETHISINDENTATIONif((condition1&&condition2)||(condition3&&condition4)||!(condition5&&condition6)){//BADWRAPSdoSomethingAboutIt();//函数体不容易辨认}//USETHISINDENTATIONINSTEADif((condition1&&condition2)||(condition3&&condition4)||!(condition5&&condition6)){doSomethingAboutIt();}longName1=longName2*(longName3+longName4-longName5)+4*longname6;//推荐longName1=longName2*(longName3+longName4-longName5)+4*longname6;//避免这种换行2.6空行适当空行的使用可以提高代码的可读性。规定如下:在下列情况下使用一个空行两个方法之间块注释或者单行注释之前一个方法的两个逻辑段之间,逻辑上密切的地方不加空行,其他地方应该加上空行分隔/**Hereisablockcomment.*/if(condition){/*Handlethecondition.*/...}while(condition){statement1;//空行if(condition){statement2;}else{statement3;}//空行statement4;}2.7空格在下列情况下使用空格:1)关键字之后要留空格。象const、static、final等关键字之后至少要留一个空格,否则无法辨析关键字。象if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。2)函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。3)“,”或者“;”后要留空格,如for(initialization;condition;update)、Function(intx,inty,intz)4)“(”向后跟紧,除了“(”前为关键字情况留空格外,而“)”、“;”向前跟紧,也就是在他们之前没有空格出现;5)所有的二元操作符号:赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=”“=”、“=”、“+”、“*”、“%”、“&&”、“||”、“”,“^”等二元操作符的前后应当加空格。6)所有一元操作符前后不加空格,“!”、“++”、“--”前后都不加空格7)强制转换后应该紧跟一个空格,如myMethod((byte)aNum,(Object)x);第3章命名规范3.1基本规则规范化的命名可以使程序易于阅读和理解,不仅仅方便自己日后看程序方便同时也方便他人进行代码的维护工作。a)命名是采用完成的英文描述,禁止使用汉语拼音和汉语进行命名。b)尽量少用缩写形式命名c)命名中尽量少出现或者不出现数字,当然用2代表to,或者4代表for是可以的。d)避免使用相似或者仅仅在大小写上区分的名字标识符类型命名规则例子包(package)1、一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,govnet,org2、edu.bju基本包,所有包和文件都在基本包下3、包名称按照如下规则组成【基本包】.【项目名】.【模块名】.【子模块名】..edu.bjut.bjwater类(Classes)采用大小写混合的方式,每个单词的首字母大写,所命名称要能反映出类的功能classRaster;classImageSprite;接口(Interfaces)与类命名规则一样方法(Methods)采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。第一个单词常常采用具有具有动作色彩的动词runFast();getBackground();变量(Variables)第一个单词的首字母小写,其后单词的首字母大写;对于不易识别类型的变量加上类型标示(HashtablekeyEleHashtable;ListallStudentsList)BooleanisXXXBooleanhasXXXStringstrXXX实例变量大小写规则和变量名相似,除了前面需要一个下String_nameInstanceVariables划线常量(Constants)应该全部大写,单词间用下划线隔开MAX_WIDTH注意:在程序开发过程中避免出现莫名的数字,既然是一个常量,那就给定义为常量来操作,不要出现不知道是什么意思的常量,使得程序变得很神秘。第4章表达式和基本语句第5章注释第6章附录—版本信息一、GNU风格的版本号命名格式:主版本号.子版本号[.修正版本号[.编译版
本文标题:Java程序开发规范
链接地址:https://www.777doc.com/doc-2881224 .html