程序书写规范.docx
- 文档编号:8883694
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:20
- 大小:22.30KB
程序书写规范.docx
《程序书写规范.docx》由会员分享,可在线阅读,更多相关《程序书写规范.docx(20页珍藏版)》请在冰豆网上搜索。
程序书写规范
1.程序书写
1.1.程序书写风格
1.1.1.培养良好的程序风格
良好的程序书写风格将有助于提高软件的质量和效率。
程序书写风格在以下方面体现:
常量、变量的使用;注释的使用;变量、属性及方法的命名;语句的书写与使用地点。
以下建议将有助于培养良好的程序书写风格:
●多阅读他人程序,包括阅读厂商提供的源程序,学习优点;
●从程序错误中吸取教训,不再犯同样错误;
●程序书写过程中,牢记有关要求,不怕麻烦。
1.1.2.程序书写规范
以下给出程序书写有关规范:
●程序必须使用逐层缩进的格式;
●程序中必须有注释(有关注释使用规范在随后章节中单独说明);
●建议分行书写复杂表达式和复杂语句;
●方法中的程序段不宜过长;
●除在极为特殊的情况下,禁止使用系统或其它软件开发包提供的未公开的函数调用。
1.2.注释
注释的使用遵循以下规范:
●要求使用注释在程序开头说明本程序的实现功能,建议用注释标明程序作者和时间,以及需要说明的其它事项;
●较多的常量定义和属性定义处,要求用注释说明变量和属性的情况;
●如果对别人的程序进行修改,必须在主要的修改处用注释说明所作的修改,并标明修改者;
●要求用注释说明方法的功能、参数、异常以及返回值,有多个返回值时应说明不同返回值的值、及返回值意义;
●同一程序段中进行不同的操作时,要求用注释说明一组程序的功能;
●大段改动程序时,建议用注释屏蔽旧的程序段,以避免修改时增加新错误,避免可能的程序恢复。
2.Java命名规则
2.1.命名综述
命名包括对程序中文件、变量、属性、方法等程序对象的命名。
好的命名风格将有助于提高程序可读性,并易于修改和维护,从而减少错误,提高编程效率。
除简单使用的变量(如用于循环计数的变量)外,变量的名称必须有意义,以便于识别该对象;但不宜过长,以避免使用中键入时出错。
软件的最终发布性文件,包括最终的可执行程序、动态链接库、帮助文件等文件的命名,由项目负责人统一确定。
软件的最终使用性名称,包括整个软件的名称及单个模块的名称,包括安装后的菜单项及快捷方式的名称,由项目负责人统一确定。
整个软件的大名称由公司经理确认。
2.2.Java命名规范
2.2.1.Java程序命名规则
●Java包的命名
包名的所有单词均为小写。
如:
business、housemanager。
Ex:
正确:
packagecom.capinfo.util;
错误:
packagecom.CAPINFO.util
●Java类的命名
类名+所属类型,类名要体现出该界面类的主要功能,类名中的所有单词的打头字母为大写,如:
HouseControl、DBControl、ComputeFrame。
Ex:
正确:
SomethingHandler.java;SomethingProxy.java,SomethingDAO.java
错误:
somethinghandler.java;somethingProxy.java,Somethingdao.java
●Java方法的命名
方法的命名要体现出此方法的作用。
方法名的第一个单词的打头字母要小写,其后单词打头字母为大写。
如:
drawPicture()、getHouse()。
Ex:
正确:
publicvoidchangePassword()
错误:
publicvoidchangepassword()
●Java变量的命名
变量名的第一个单词的打头字母要小写,其后单词打头字母为大写。
变量的命名应该体现该变量代表的含义。
该规则既适用于类的属性,也适用于方法中的变量和方法使用的参数。
Ex:
正确:
StringapplicationName;publicvoidvalidateUser(intuserId,Stringpassword)
错误:
Stringapplicationname;publicvoidvalidateUser(intUserId,Strings)
●Java常量的命名
这里常量指的是类型为staticfinal的变量。
常量全部以大写字母书写,如超过一个单词,则应采用“_”链接,单词可使用缩写。
如:
PI、HOUSE_TYPE
Ex:
正确:
staticfinalStringSYSTEM_ADMIN_USER=“admin”;
错误:
staticfinalStringSYSTEMADMINUSER=“admin”;
●Java文件名的命名
文件名必须与类名相同,遵守和类名相同的规则。
●Java数组的命名
数组的方括号应该在变量前面,而不是后面。
Ex:
正确:
byte[]buffer;
错误:
bytebuffer[];
3.Java注释规则
3.1.注释规则综述
Java程序有两类注释:
实现注释(implementationcomments)和文档注释(documentcomments)。
实现注释是那些使用/*...*/和//界定的注释。
文档注释(被称为"doccomments")是Java独有的,并由/**...*/界定。
文档注释可以通过javadoc工具转换成HTML文件。
注释应被用来给出代码的概括,并提供代码自身没有提供的附加信息。
注释应该仅包含与阅读和理解程序有关的信息。
在注释里,对设计决策中重要的或者不是显而易见的地方进行说明是可以的,但应避免提供代码中己清晰表达出来的重复信息。
多余的的注释很容易过时。
通常应避免那些代码更新就可能过时的注释。
3.2.注释规则描述
3.2.1.类的注释
应该在java文件的开头,应遵守这样的规范。
/**
*
Title:
类名
*
Description:
类的功能描述
*
Copyright:
版权
*
Company:
公司
*@author作者
*@version版本
*/
3.2.2.方法的注释
应该位于方法的上面,对方法进行描述。
/**
*方法内容
*
*@param参数名参数说明
*@return返回值的说明
*@exception例外
*/
Ex:
/**
*根据userId判断用户是否存在
*
*@paramuserId登录用户id
*@returntrue用户存在、false用户不存在
*@exceptionLoginException登录错误
*@exceptionSQLExceptionSQL语句错误
*/
publicbooleanisUserExist(intuserId)
throwsLogicException,SQLException{
...
}
3.2.3.属性的注释
属性的注释分为2种:
●需要生成javadoc的变量注释(即文档注释)
如果注释在一行内,采用这样的注释
/**变量的说明*/
如果注释在多行内,采用这样的注释
/**
*变量的说明
*…
*/
●不需要生成javadoc的变量注释(即实现注释)
如果注释在一行内,采用这样的注释
/*变量的说明*/或者//变量的说明
如果注释在多行内,采用这样的注释
/*
*变量的说明
*…
*/
3.2.4.一般内容的注释
如果注释在一行内,采用这样的注释
/*变量的说明*/或者//变量的说明
如果注释在多行内,采用这样的注释
/*
*变量的说明
*…
*/
3.2.5.有关修改的注释
这里指的修改主要对应于这样的情况:
●自己在修改别人的代码时,需要注释
●虽然是自己的代码,但出现了大的业务改动,需要注释
修改方法:
●在类注释的author一栏中加入修改人、修改时间和修改原因。
●在代码中将自己修改的部分用注释区分出来,注释中需要有修改人,修改时间,修改开始和解释描述。
●修改的内容中随时写注释。
Ex:
注意用红字标识出的部分。
/**
*
Title:
TestDoc
*
Description:
thisisatestforjavadoc
*
Copyright:
Copyright(c)2003
*
Company:
首都信息发展股份有限公司
*
*@authorxiaoqiao2003-03-05create
*liqiang2003-05-05modifyfortest
*@version1.0
*/
publicclassTestDoc{
publicStringtestDoc(Strings1,inti2)throwsException{
StringreturnValue=getReturnString();
returnreturnValue;
}
publicStringgetReturnString(){
StringreturnValue="thisisthefirststring";
//addbyxiaoqiaoat2003-03-06forteststart
//重新获取返回值
returnValue="thisisthesecondString";
//addbyxiaoqiaoat2003-03-06end
/*#############byxiaoqiaoat2003-4-4start
对于原作者的内容根据新的修改需要所注释掉的部分
*/
returnreturnValue;
}
}
4.Java逻辑结构规则
4.1.if语句规范
●if语句不允许使用省略方式,即必须带有{}。
哪怕if块中只有一句代码。
Ex
正确:
if(cnt==1){
fileName="file1.txt";
}else{
fileName="file2.txt";
}
错误:
if(cnt==1)
fileName="file1.txt";
else
fileName="file2.txt";
●“if”、“else”、“(”、“)”和“{”之间应有一个英文空格。
Ex
正确:
(空格处已用红色标出)
if(cnt==1){
fileName="file1.txt";
}else{
fileName="file2.txt";
}
错误:
if(cnt==1){
fileName="file1.txt";
}else{
fileName="file2.txt";
}
4.2.循环语句规范
for循环、while循环、dowhile循环,和if语句一样,“for”“while”和“(”以及“)”和“{”之间要有一个半角空格。
另外在for语句的条件括号中,“;”、“=”还有逻辑运算符(如“>”、“<”)的两侧必须要有空格。
While语句的括号中也是同理。
Ex
正确:
请注意空格的位置
for(inti=0;i<10;iCounter++){
System.out.println("Looping");
}
while(count>0){
…
}
do{
…
}while()
错误:
缺少空格。
for(inti=0;i<10;iCounter++){
System.out.println("Looping");
}
while(count>0){
…
}
do{
…
}while()
4.3.switch语句和break语句规范
●通常,switch语句中各个case之后,都会有break结束。
如果下一个case还要接着执行,一般在break的位置添加一个注释行“//notbreak;”。
●switch和case语句均需要缩进。
Ex
正确:
请注意空格与缩进
switch(funcNo){
case4:
func4();
break;
case3:
func3();
//notbreak;
case2:
func2();
break;
case1:
func1();
break;
}
错误:
缺少缩进以及“notbreak”
switch(funcNo){
case4:
func4();
break;
case3:
func3();
case2:
func2();
break;
case1:
func1();
break;
}
5.Java通用编码规则
5.1.import的包名顺序
在程序中如果import了多个包的话,请遵照这样的import顺序。
并且,对于同一级的包,应该按照字母顺序进行排序。
No
Package
1
JavaPackage
2
JavaxPackage
3
SystemFrameWorkPackage
4
SystemPackage
Ex
正确:
importjava.io.*;
importjava.rmi.*;
importjava.util.*;//上面是java标准包
importjavax.ejb.*;
importjavax.naming.*;
importjavax.rmi.*;//这部分是java扩展包
importorg.apache.struts.*;
importorg.apache.struts.action.*;//这部分是struts的framework的包
importcom.capinfo.util.*;//这部分是系统需要的包
错误:
import的顺序不对,并且同一级的import的字母顺序也不对。
importjava.util.*;
importjavax.ejb.*;
importjavax.naming.*;
importjavax.rmi.*;
importorg.apache.struts.*;
importcom.capinfo.util.*;
importorg.apache.struts.action.*;
importjava.io.*;
importjava.rmi.*;
注意:
如果只应用到了某个包中的一个类,则需要写出该类的详细路径。
如:
importjava.util.Vector;
5.2.“{}”使用规范
大括号不要用在一行里,起始大括号“{”要在行尾,并且和前面的代码要有一个空格。
结束的大括号要在另一行里。
Ex
正确:
注意大括号的换行和空格
try{
…
}catch(CertificateExceptionex){
…
}catch(IOExceptionex){
…
}
错误:
换行不对,而且缺少空格。
try{
…
}catch(CertificateExceptionex){
…
}catch(IOExceptionex){…}
5.3.小括号使用规范
●在进行方法调用时,左括号和后一个字符之间不应该出现空格,同样,右括号和前一个字符之间也不应该出现空格。
Ex
正确:
CallProc(AParameter);
错误:
多空格
CallProc(Aparameter);
●在混合运算中用括号以避免出现运算符优先级问题,即使你自己非常清楚运算符的优先级,别人也不一定清楚——不能假定其它程序员都像你一样清楚运算符的优先顺序。
Ex
正确:
if((a==b)&&(c==d)){
…
}
错误:
缺少括号
if(a==b&&c==d){
…
}
5.4.空格使用规范
有关空格,上面已经列举很多种情况,下面简单总结并做些补充
●在逻辑条件、循环条件判断处的“()”前后,需要有空格。
●在表示模块的起始大括号“{”前,需要有空格。
●在表示方法调用的括号内部紧挨着括号的参数与括号之间,不能有空格。
●在方法调用需要多个参数时,在紧跟着参数的逗号后面,需要有空格。
(逗号前不能有空格)
Ex:
正确:
method1(p1,p2,p3);
错误:
method1(p1,p2,p3);//缺少空格
method1(p1,p2,p3);//空格位置不对
●在for循环的循环条件括号内部的分号后,需要有空格。
Ex
正确:
for(inti=0;i<10;iCounter++){
System.out.println("Looping");
}
错误:
多处缺少空格
for(inti=0;i<10;iCounter++){
System.out.println("Looping");
}
●在操作符的两侧应该各有一个空格。
如“=”、“==”、“>”、“<”、“+”、“*”等等。
Ex
正确:
for(inti=0;i<10;iCounter++){
j=I+5;
}
错误:
运算符前后缺少空格。
for(inti=0;i<10;iCounter++){
j=I+5;
}
5.5.缩进规范
●这里所说的空格是指英文状态下的一个空格。
●不论是java代码,还是jsp代码,缩进采用4个空格。
●缩进必须是4个空格,而不能用tab字符代替。
因为在不同的文件编辑器中,对tab字符的设定有可能是不同的。
5.6.JavaBean的存取方法规范
●如果是boolean类型的属性(property),采用isXXX/setXXX的方式来写该属性的存取方法
Ex
正确:
privatebooleanchanged=false;
publicbooleanisChanged(){
returnthis.changed;
}
publicvoidsetChanged(booleanchanged){
this.changed=changed;
}
错误:
存取方法命名不对
privatebooleanchanged=false;
publicbooleanalreadyChanged(){
returnthis.changed;
}
publicvoidmodifyChanged(booleanchanged){
this.changed=changed;
}
●对于其他类型的属性,均采用getXXX/setXXX的方式来写该属性的存取方法。
Ex
正确:
privateStringuserName="";
publicStringgetUserName(){
returnthis.userName;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
错误:
方法命名不对
privateStringuserName="";
publicStringretrieveUserName(){
returnthis.userName;
}
publicvoidmodifyUserName(StringuserName){
this.userName=userName;
}
5.7.toString方法规范
所有的数据类(data类,或者model类),必须要写toString方法,以便在使用调试时候可以把它所具有的数据打印出来。
Ex
publicclassUserimplementsSerializable{
privateintuserId=-1;
publicintgetUserId(){
returnthis.userId;
}
publicvoidsetUserId(intuserId){
this.userId=userId;
}
privateStringuserName="";
publicStringgetUserName(){
returnthis.userName;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
publicStringtoString(){
StringBuffersb=newStringBuffer();
sb.append("\nUserPropertieslistbegin\n");
sb.append("userId="+userId+"\n");
sb.append("userName="+userName+"\n");
sb.append("UserPropertieslistend\n");
returnsb.toString();
}
}
5.8.main方法规范
如果要定义main(String[])方法,那么就应该写在类的底部。
5.9.一行里的字符个数规范
页宽应该设置为80字符,即一行不应该超过80个字符。
超长的语句应该在合适的位置进行换行(如在完整单词的结束、括号结束、逗号等符号后换行)。
一条语句换行后,应该不影响语义,并放在合适位置
Ex
Stringsql=“SELECT”
+“FIELD1,FIELD2,FIELD3”
+“FROM”
+“TABLE1”;
6.编程工具的使用
软件开发中所使用的编程工具及其它开发工具,由项目负责人确定。
主要的软件开发工具以及该工具的版本,由公司负责人确认。
在软件开发过程中,严禁在未经许可的情况下变更开发工具,或变更开发工具的版本。
开发过程中的开发工具变更必须由公司负责人确认。
这里的开发工具或编程工具泛指各类产生目标代码或最终的软件发布文件的工具,包括语言开发工具(如Jbuilder、WSAD等)、文档编写工具(如MSWord等)、联机帮助或文档编写工具(如帮助编写工具)、以及属于发布文件的有关资源编写工具(例如,如果软件发布文件中包含图像文件,则制作这些图像文件的图像编辑工具也属于此列),等等。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 书写 规范
![提示](https://static.bdocx.com/images/bang_tan.gif)