JAVA代码规范1.docx
- 文档编号:269964
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:12
- 大小:21.11KB
JAVA代码规范1.docx
《JAVA代码规范1.docx》由会员分享,可在线阅读,更多相关《JAVA代码规范1.docx(12页珍藏版)》请在冰点文库上搜索。
JAVA代码规范1
第一章编写目的3
第二章阅读对象3
第三章定义3
第四章基本要求3
第五章规范3
命名规范3
Package的命名4
Class的命名4
Class变量的命名4
StaticFinal变量的命名4
参数的命名4
数组的命名4
方法的参数4
Java文件样式5
版权信息5
Class5
构造函数6
类方法6
toString方法7
main方法7
代码编写格式7
文档化7
缩进7
页宽8
{}对8
括号8
程序编写规范8
exit()8
异常9
垃圾收集9
编程技巧9
byte数组转换到characters9
Utility类9
初始化10
枚举类型10
调试10
资源使用10
性能11
日志11
第一章
编写目的
为了规范JAVA程序的开发,便于程序的测试和维护,特制定本标准,对JAVA程序开发和维护过程中的命名规范、文件、代码编写格式、编程技巧、swing组件、调试、性能等内容作出规范化的要求。
第二章阅读对象
JAVA程序开发人员,系统测试和系统维护人员。
第三章定义
匈牙利命名法
第四章基本要求
程序结构清晰,简单易懂;
代码精简,避免垃圾程序;
尽量使用标准库函数和公共函数;
不要随意定义全局变量,尽量使用局部变量;
注释用词要简洁,便于理解;
包、类名、变量所用单词最好是英文单词,只有在极端情况下允许使用拼音等其他方式。
第五章规范
所有的程序开发手册都包含了各种规则。
一些习惯自由程序人员可能对这些规则很不适应,但是在多个开发人员共同写作的情况下,这些规则是必需的。
这不仅仅是为了开发效率来考虑,而且也是为了后期维护考虑。
命名规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。
(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)
Package的命名
Package的名字应该都是由一个小写单词组成(总包名称为网址倒写如:
.sl)。
包命名为.sl.x.xi(x指系统的名字,xi指系统中模块的名字)如:
.sl.ticket.util表示为售票系统的工具包。
Class的命名
Class的名字必须由大写字母开头而其他字母都小写的单词组成。
Class变量的命名
变量的名字必须用一个小写字母开头。
后面的单词用大写字母开头。
StaticFinal变量的命名
StaticFinal变量的名字应该都大写,并且指出完整含义。
参数的命名
参数的名字必须和变量的命名规范一致。
数组的命名
数组应该总是用下面的方式来命名:
byte[]buffer;
而不是:
bytebuffer[];
方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
SetCounter(intsize){
this.size=size;
}
Java文件样式
所有的Java(*.java)文件都必须遵守如下的样式规则
版权信息
版权信息必须在java文件的开头,比如:
/**
*Copyright?
2002S&LCo.Ltd.
*Allrightreserved.
*/
其他不需要出现在javadoc的信息也可以包含在这里。
Class
接下来的是类的注释,一般是用来解释类的。
/**
*Aclassrepresentingasetofpacketandbytecounters
*Itisobservabletoallowittobewatched,butonly
*reportschangeswhenthecurrentsetiscomplete
*/
接下来是类定义,包含了在不同的行的extends和implements
publicclassCounterSet
extendsObservable
implementsCloneable
ClassFields
接下来是类的成员变量:
/**
*Packetcounters
*/
protectedint[]packets;
public的成员变量必须生成文档(JavaDoc)。
proceted、private和package定义的成员变量如果名字含义明确的话,可以没有注释。
存取方法
接下来是类变量的存取的方法。
它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。
/**
*Getthecounters
*@returnanarraycontainingthestatisticaldata.Thisarrayhasbeen
*freshlyallocatedandcanbemodifiedbythecaller.
*/
publicint[]getPackets(){returncopyArray(packets,offset);}
publicint[]getBytes(){returncopyArray(bytes,offset);}
publicint[]getPackets(){returnpackets;}
publicvoidsetPackets(int[]packets){this.packets=packets;}
其它的方法不要写在一行上
构造函数
接下来是构造函数,它应该用递增的方式写(比如:
参数多的写在后面)。
访问类型("public","private"等.)和任何"static","final"或"synchronized"和方法和参数写一行,这样可以使方法和参数更易读。
publicCounterSet(intsize){
this.size=size;
}
类方法
下面开始写类的方法:
/**
*Setthepacketcounters
*(suchaswhenrestoringfromadatabase)
*/
protectedfinalvoidsetArray(int[]r1,int[]r2,int[]r3,int[]r4)
throwsIllegalArgumentException{
//
//Ensurethearraysareofequalsize
//
if(r1.length!
=r2.length||r1.length!
=r3.length||r1.length!
=r4.length)
thrownewIllegalArgumentException("Arraysmustbeofthesamesize");
System.arraycopy(r1,0,r3,0,r1.length);
System.arraycopy(r2,0,r4,0,r1.length);
}
toString方法
无论如何,每一个类都应该定义toString方法:
publicStringtoString(){
Stringretval="CounterSet:
";
for(inti=0;i retval+=data.bytes.toString(); retval+=data.packets.toString(); } returnretval; } } main方法 如果main(String[])方法已经定义了,那么它应该写在类的底部. 代码编写格式 文档化 必须用javadoc来为类生成文档。 不仅因为它是标准,这也是被各种java编译器都认可的方法。 使用@author标记是不被推荐的,因为代码不应该是被个人拥有的。 缩进 缩进应该是每行2个空格.不要在源文件中保存Tab字符.在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度. 如果你使用UltrEdit作为你的Java源代码编辑器的话,你可以通过如下操作来禁止保存Tab字符,方法是通过UltrEdit中先设定Tab使用的长度室2个空格,然后用Format|TabstoSpaces菜单将Tab转换为空格。 页宽 页宽应该设置为80字符.源代码一般不会超过这个宽度,并导致无法完整显示,但这一设置也可以灵活调整.在任何情况下,超长的语句应该在一个逗号或者一个操作符后折行.一条语句折行后,应该比原来的语句再缩进2个字符. {}对 {}中的语句应该单独作为一行.例如,下面的第1行是错误的,第2行是正确的: if(i>0){i++};//错误,{和}在同一行 if(i>0){ i++ };//正确,{单独作为一行 }语句永远单独作为一行. 如果}语句应该缩进到与其相对应的{那一行相对齐的位置。 括号 左括号和后一个字符之间不应该出现空格,同样,右括号和前一个字符之间也不应该出现空格.下面的例子说明括号和空格的错误及正确使用: CallProc(AParameter);//错误 CallProc(AParameter);//正确 不要在语句中使用无意义的括号.括号只应该为达到某种目的而出现在源代码中。 下面的例子说明错误和正确的用法: if((I)=42){//错误-括号毫无意义 if(I==42)or(J==42)then//正确-的确需要括号 程序编写规范 exit() exit除了在main中可以被调用外,其他的地方不应该调用。 因为这样做不给任何代码代码机会来截获退出。 一个类似后台服务地程序不应该因为某一个库模块决定了要退出就退出。 异常 申明的错误应该抛出一个RuntimeException或者派生的异常,不允许在非顶层方法中吃掉异常,所有非顶层方法中的异常都应该以异常链的方式抛出,顶层方法接收到异常后,必须做出处理: 例如写入数据库、记录日志等,并以友好的方式反馈给操作人员。 垃圾收集 JAVA使用成熟的后台垃圾收集技术来代替引用计数。 但是这样会导致一个问题: 你必须在使用完对象的实例以后进行清场工作。 比如一个prel的程序员可能这么写: ... { FileOutputStreamfos=newFileOutputStream(projectFile); project.save(fos,"IDEProjectFile"); } ... 除非输出流一出作用域就关闭,非引用计数的程序语言,比如JAVA,是不能自动完成变量的清场工作的。 必须象下面一样写: FileOutputStreamfos=newFileOutputStream(projectFile); project.save(fos,"IDEProjectFile"); fos.close(); 编程技巧 byte数组转换到characters 为了将byte数组转换到characters,你可以这么做: "Helloworld! ".getBytes(); Utility类 Utility类(仅仅提供方法的类)应该被申明为抽象的来防止被继承或被初始化。 初始化 下面的代码是一种很好的初始化数组的方法: objectArguments=newObject[]{arguments}; 枚举类型 JAVA对枚举的支持不好,但是下面的代码是一种很有用的模板: classColour{ publicstaticfinalColourBLACK=newColour(0,0,0); publicstaticfinalColourRED=newColour(0xFF,0,0); publicstaticfinalColourGREEN=newColour(0,0xFF,0); publicstaticfinalColourBLUE=newColour(0,0,0xFF); publicstaticfinalColourWHITE=newColour(0xFF,0xFF,0xFF); } 这种技术实现了RED,GREEN,BLUE等可以象其他语言的枚举类型一样使用的常量。 他们可以用'=='操作符来比较。 但是这样使用有一个缺陷: 如果一个用户用这样的方法来创建颜色BLACK newColour(0,0,0) 那么这就是另外一个对象,'=='操作符就会产生错误。 她的equal()方法仍然有效。 由于这个原因,这个技术的缺陷最好注明在文档中,或者只在自己的包中使用。 调试 使用log4j的debug输出调试信息。 资源使用 对于数据库链接、硬件资源都必须在使用完毕后再finally中进行关闭,异常情况下的关闭是必须的。 性能 在写代码的时候,从头至尾都应该考虑性能问题。 这不是说时间都应该浪费在优化代码上,而是我们时刻应该提醒自己要注意代码的效率。 比如: 如果没有时间来实现一个高效的算法,那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她。 不是所有的人都同意在写代码的时候应该优化性能这个观点的,他们认为性能优化的问题应该在项目的后期再去考虑,也就是在程序的轮廓已经实现了以后。 不必要的对象构造。 不要在循环中构造和释放对象。 使用StringBuffer对象 在处理String的时候要尽量使用StringBuffer类,StringBuffer类是构成String类的基础。 String类将StringBuffer类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。 当我们在构造字符串的时候,我们应该用StringBuffer来实现大部分的工作,当工作完成后将StringBuffer对象再转换为需要的String对象。 比如: 如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用StringBuffer对象和她的append()方法。 如果我们用String对象代替StringBuffer对象的话,会花费许多不必要的创建和释放对象的CPU时间。 避免太多的使用synchronized关键字 避免不必要的使用关键字synchronized,应该在必要的时候再使用她,这是一个避免死锁的好方法。 对于一个连贯性的事务操作,只申请一次数据库链接。 数据库访问尽量使用连接池。 对于数据量小并且不会频繁变动的数据,系统启动时调入应用服务器内存,并且创建一个合适的同步机制。 日志 使用Log4j记录日志信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 代码 规范
![提示](https://static.bingdoc.com/images/bang_tan.gif)