软件系统JAVA编码规范版本V1.0文档信息:内容范围:本文档是软件系统JAVA编码规范。
适用的对象:公司相关技术人员。
目录1 介绍(INTRODUCTION) (5)2 2 文件名(FILE NAMES) (6)2.1文件后缀(F ILE S UFFIXES) (6)2.2常用文件名(C OMMON F ILE N AMES) (6)3 文件组织(FILE ORGANIZATION) (7)3.1J AVA源文件(J AVA S OURCE F ILES) (7)3.1.1开首注释(B EGINNING C OMMENTS) (7)3.1.2包和引入语句(P ACKAGE AND I MPORT S TATEMENTS) (8)3.1.3类和接口声明(C LASS AND I NTERFACE D ECLARATIONS) (8)4 缩进排版(INDENTATION) (9)4.1行长度(L INE L ENGTH) (9)4.2换行(W RAPPING L INES) (9)5 注释(COMMENTS) (13)5.1实现注释的格局(I MPLEMENTATION C OMMENT F ORMATS) (13)5.1.1块注释(B LOCK C OMMENTS) (13)5.1.2单行注释(S INGLE-L INE C OMMENTS) (14)5.1.3尾端注释(T RAILING C OMMENTS) (15)5.1.4行末注释(E ND-O F-L INE C OMMENTS) (15)5.2文档注释(D OCUMENTATION C OMMENTS) (16)6 声明(DECLARATIONS) (17)6.1每行声明变量的数量(N UMBER P ER L INE) (17)6.2初始化(I NITIALIZATION) (17)6.3布局(P LACEMENT) (17)6.4类和接口的声明(C LASS AND I NTERFACE D ECLARATIONS) (18)7 语句(STATEMENTS) (20)7.1简单语句(S IMPLE S TATEMENTS) (20)7.2复合语句(C OMPOUND S TATEMENTS) (20)7.3返回语句(RETURN S TATEMENTS) (20)7.4 IF,IF-ELSE,IF ELSE-IF ELSE语句 (20)7.5 FOR语句(FOR S TATEMENTS) (21)7.6 WHILE语句(WHILE S TATEMENTS) (22)7.7 DO-WHILE语句(DO-WHILE S TATEMENTS) (22)7.8 SWITCH语句(SWITCH S TATEMENTS) (22)7.9 TRY-CATCH语句(TRY-CATCH S TATEMENTS) (23)8 空白(WHITE SPACE) (25)8.1空行(B LANK L INES) (25)8.2空格(B LANK S PACES) (25)9 定名规范(NAMING CONVENTIONS) (27)10 编程实践(PROGRAMMING PRACTICES) (29)10.1供给对实例以及类变量的接见把握 (29)10.2引用类变量和类办法 (29)10.3常量(C ONSTANTS) (29)10.4变量赋值(V ARIABLE A SSIGNMENTS) (29)10.5其它实战(M ISCELLANEOUS P RACTICES) (30)10.5.1圆括号(P ARENTHESES) (30)10.5.2返回值(R ETURNING V ALUES) (30)10.5.3前提运算符"?"前的表达式 (31)10.5.4特别注释(S PECIAL C OMMENTS) (31)11 代码示例(CODE EXAMPLES) (32)为什么要有编码规范(Why Have Code Conventions)?编码规范对于程序员而言尤为首要,主要有以下几个原因:•一个软件的生命周期中,80%的花费在于维护•几乎没有任何一个软件,在其全部生命周期中,均由最初的开辟人员来维护•编码规范可以改良软件的可读性,可以让程序员尽快而彻底地懂得新的代码•若是你将源码作为产品公布,就须要确任它是否被很好的打包并且清楚无误,一如你已构建的其它任何产品为了履行规范,每个软件开辟人员必须一致遵守编码规范。
这项目组列出了常用的文件名及后缀。
2.1文件后缀(File Suffixes)Java程序应用下列文件后缀:表1:文件后缀规范表2.2常用文件名(Common File Names)常用的文件名包含:表2:常用文件名规范表3 文件组织(F ILE O RGANIZATION)一个文件由被空行分别而成的段落以及标识每个段落的可选注释共同构成。
跨越2000行的程序难以浏览,应当尽量避免。
"Java源文件典范"供给了一个布局公道的Java程序典范。
3.1Java源文件(Java Source Files)每个Java源文件都包含一个单一的公共类或接口。
若私有类和接口与一个公共类相接洽关系,可以将它们和公共类放入同一个源文件。
公共类必须是这个文件中的第一个类或接口。
Java源文件还遵守以下规矩:•开首注释(拜见"开首注释")•包和引入语句(拜见"包和引入语句")•类和接口声明(拜见"类和接口声明")3.1.1 开首注释(Beginning Comments)所有的源文件都应当在开首有一个C说话风格的注释,此中列出类名、版本信息、日期和版权声明:/** Classname** Version information** Date** Copyright notice*/3.1.2 包和引入语句(Package and Import Statements)在多半Java源文件中,第一个非注释行是包语句。
在它之后可以跟引入语句。
例如:package java.awt;import java.awt.peer.CanvasPeer;3.1.3 类和接口声明(Class and Interface Declarations)下表描述了类和接口声明的各个项目组以及它们呈现的先后次序。
拜见"Java 源文件典范"中一个包含注释的例子。
表3:类和接口声明规范表4 缩进排版(I NDENTATION)4个空格常被作为缩进排版的一个单位。
缩进的确切申明并未具体指定(空格vs. 制表符)。
一个制表符便是8个空格(而非4个)。
4.1行长度(Line Length)尽量避免一行的长度跨越80个字符,因为很多终端和对象不克不及很益处理惩罚之。
重视:用于文档中的例子应当应用更短的行长,长度一般不跨越70个字符。
4.2换行(Wrapping Lines)当一个表达式无法容纳在一行内时,可以根据如下一般规矩断开之:•在一个逗号后面断开•在一个操纵符前面断开•宁可选择较高等别(higher-level)的断开,而非较初级别(lower-level)的断开•新的一行应当与上一行同一级别表达式的开首处对齐•若是以上规矩导致你的代码杂沓或者使你的代码都堆挤在右边,那就代之以缩进8个空格。
以下是断创办法调用的一些例子:someMethod(longExpression1,longExpression2,longExpression3,longExpression4,longExpression5);var = someMethod1(longExpression1,someMethod2(longExpression2,longExpression3));【译者注】上方是SUN(Oracle)网站上html版起原根蒂根基始写法,笔者看了半天是一头雾水;对比pdf版本看,才发明是SUN的html版本写的不合错误:亦即,新的一行在上一行同一级别表达式的开首对齐:longExpression4与longExpression1对齐;someMethod2与longExpression1对齐,longExpression3与longExpression2对齐:someMethod(longExpression1,longExpression2,longExpression3,longExpression4,longExpression5);var = someMethod1(longExpression1,someMethod2(longExpression2,longExpression3));以下是两个断开算术表达式的例子。
前者更好,因为断开处位于括号表达式的外边,这是个较高等此外断开。
longName1 = longName2 * (longName3 + longName4 - longName5)+ 4 * longname6; //PREFFERlongName1 = longName2 * (longName3 + longName4- longName5)+ 4 * longname6; //A VOID 【译者注】上方是SUN(Oracle)网站上html版起原根蒂根基始写法,笔者看了半天是一头雾水;对比pdf版本看,才发明是SUN的html版本写的不合错误:亦即,新的一行在上一行同一级别表达式的开首对齐:加号与longName2对齐;减号与longName3对齐(固然分行的处所不合错误,但书写还是要对齐的)。
longName1 = longName2 * (longName3 + longName4 - longName5)+ 4 * longname6; //PREFFERlongName1 = longName2 * (longName3 + longName4- longName5)+ 4 * longname6; //A VOID 以下是两个缩进办法声明的例子。
前者是常规景象。
后者若应用常规的缩进体式格式将会使第二行和第三行移得很靠右,所以代之以缩进8个空格//CONVENTIONALINDENTATIONsomeMethod(int anArg,Object anotherArg,String yetAnotherArg,Object andStillAnother){...}//INDENT 8 SPACESTO A VOID VERY DEEP INDENTSprivate static synchronized horkingLongMethodName(int anArg,Object anotherArg,String yetAnotherArg,Object andStillAnother){...}if语句的换行凡是应用8个空格的规矩,因为常规缩进(4个空格)会使语句体看起来斗劲费劲。