JAVA源代码规范

JAVA源代码规范
JAVA源代码规范

JAVA代码规范

(初稿)

2004、4

?版本更新信息

本版本创建/修改、维护、批准涉及人员如下:

创建/修改者:XX

维护者:XX

批准者:XX

具体版本更新记录如表1-1:

表1-1 版本更新记录

修改方式:A-增加 M-修改 D-删除?目得

本文提供一整套编写高效可靠得 Java 代码得标准、约定与指南。它们以安全可靠得软件工程原则为基础,使代码易于理解、维护与增强灵活性。通过遵循一套通用得程序设计标准,显著提高 Java 软件开发者得生产效率,为开发团队得程序设计带来更大得一致性,使软件开发团队得效率明显提高。

?规范得执行

本文档适用于公司内进行软件开发得所有技术人员,即公司内软件开发人员编写得所有源代码都必须遵循本规范。

除临时性项目之外得任何项目均应严格按照此标准执行,“临时性项目”指:?为市场推广目得而编写得示程序

?为一次性用途而编写得临时性小程序

为学习目得而编写得测试程序

?文档类别

本文档属标准规范类得项目限制级文档,未经总经理及总经理授权人员批准,不得提供公司以外得人员阅读与使用。

?版本更新条件

本文档得定期评审时间为每年得1月,评审及修订步骤依据SEPG工作规范规定。此外,如遇下列条件可进行评审,并根据评审结果决定就是否需要进行修订:

?本文档所列得引用得标准已经更新。

?本文档得使用者若对本文档有任何评论、建议或意见,请通过企业内部网络发电子邮件给SEPG,所收到得电子邮件将会在评审与修订时给予充分

得考虑。

?使用对象

本文档得使用对象包括:

?项目管理者

?质量保证人员

?软件开发人员

目录

1介绍 (4)

1、1为什么要有编码规范 (4)

2通用代码格式 (4)

2、1文件组织 (4)

2、2缩进 (5)

2、3行长度 (6)

2、4换行 (6)

2、5空行 (7)

2、6空格 (7)

2、7注释 (8)

2、7、1注释约定 (8)

2、7、2实现注释得格式 (9)

2、7、3文档注释 (10)

2、7、4快速浏览javadoc (10)

2、8声明 (11)

2、8、1每行声明变量得数量 (11)

2、8、2初始化 (11)

2、8、3布局 (11)

2、8、4类与接口得声明 (12)

2、9语句 (12)

2、9、1简单语句 (12)

2、9、2复合语句 (13)

2、9、3返回语句 (13)

2、9、4if,if-else,if else-if else语句 (13)

2、9、5for语句 (13)

2、9、6while语句 (14)

2、9、7do-while语句 (14)

2、9、8switch语句 (14)

2、9、9try-catch语句 (14)

2、10SQL (15)

3命名规范 (15)

3、1总则 (15)

3、2项目命名 (16)

3、3命名规则 (16)

3、4变量命名机制 (17)

3、4、1基本类型变量命名规则:变量类型标识+逻辑名 (17)

3、4、2一般常用对象命名规则 (18)

3、4、3临时变量命名规则 (18)

3、4、4全局变量、成员变量、局部变量命名规则 (18)

3、4、5常量命名机制 (19)

3、5HTML元素变量命名机制 (19)

3、6JSP文件命名机制 (19)

4类、接口、包与编译单元得标准 (19)

4、1类得标准 (19)

4、1、1命名类 (19)

4、1、2注释类 (20)

4、2接口标准 (21)

4、2、1命名接口 (21)

4、2、2注释接口 (21)

4、3包得标准 (21)

4、3、1命名包 (21)

4、3、2注释包 (21)

4、4编译单元标准 (22)

4、4、1命名编译单元 (22)

4、4、2注释编译单元 (22)

5字段标准(字段/属性) (22)

5、1字段可见性 (22)

5、2注释一个字段 (23)

5、3使用存取成员方法 (23)

5、3、1存取函数得可见性 (24)

5、3、2一定要初始化静态字段 (24)

6成员函数与方法标准 (24)

6、1命名函数与成员方法 (24)

6、2命名存取成员函数与方法 (24)

6、3命名构造函数 (25)

6、4成员函数与方法得可见性 (25)

6、5成员函数与方法参数标准 (26)

6、5、1命名参数 (26)

6、5、2注释参数 (26)

6、6注释成员函数与方法 (26)

7编程惯例 (28)

7、1提供对实例以及类变量得访问控制 (28)

7、2引用类变量与类方法 (28)

7、3常量 (28)

7、4变量赋值 (28)

8其它惯例 (29)

8、1圆括号 (29)

8、2返回值 (29)

8、3条件运算符"?"前得表达式 (29)

8、4特殊注释 (30)

9代码范例 (30)

9、1源文件范例 (30)

10缩写说明 (31)

11参考资料 (31)

1介绍

1.1为什么要有编码规范

编码规范对于程序员而言尤为重要,有以下几个原因:

?一个软件产品得80%得生命期就是在维护。

?几乎没有一个软件在它得整个生命期里都就是被它得作者来维护得。

?使用好得风格提高了软件得可维护性。

?如果源代码与软件产品就是捆绑给客户得,作为产品得剩余部分,它应该有好得分包(well-packaged),足够清晰与专业得代码。

2通用代码格式

2.1文件组织

一个文件由被空行分割而成得段落以及标识每个段落得可选注释共同组成。超过2000行得程序难以阅读,应该尽量避免。

Java源文件必须遵循以下规则:

?文件头部注释

所有得源文件都应该在开头有一个C语言风格得注释,其中列出文件名、作者、公司、日期、描述、修改说明与版权声明:

/*

* File: OrderSessionBean、java

* Author: wangxie

* Version: 1、1

* Date: 06/04/2004

* Modify:

* Description:

* Copyright notice

*/

?包与引入语句

在Java源文件中,第一个非注释行就是Package语句。Package 行要在 Import 行之前,Import 中标准得包名要在本地得包名之前,而且按照字母顺序排列。例如:

package java、awt;

import java、awt、peer、CanvasPeer;

import java、io、InputStream;

import cn、edu、cuit、TestApplication;

?类与接口声明

2.2缩进

4个空格常被作为缩进排版得一个单位,以表示缩进,显示程序得层次级别,增加程序得可读性。不要在源代码中保留tab字符,这就是因为tab字符会随着不同用户得不同设置与不同得资源管理工具(打印、文档、版本控制等)而代表

不同得宽度。

2.3行长度

尽量避免一行得长度超过80个字符,因为很多终端与工具不能很好处理之。注意:用于文档中得例子应该使用更短得行长,长度一般不超过70个字符。

2.4换行

当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之:?在一个逗号后面断开

?在一个操作符前面断开

?宁可选择较高级别(higher-level)得断开,而非较低级别(lower-level)得断开

?新得一行应该与上一行同一级别表达式得开头处对齐

?如果以上规则导致您得代码混乱或者使您得代码都堆挤在右边,那就代之以缩进8个空格。

以下就是断开方法调用得一些例子:

someMethod(longExpression1, longExpression2, longExpression3,

longExpression4, longExpression5);

var = someMethod1(longExpression1,

someMethod2(longExpression2,

longExpression3));

以下就是两个断开算术表达式得例子。前者更好,因为断开处位于括号表达式得外边,这就是个较高级别得断开。

longName1 = longName2 * (longName3 + longName4 - longName5)

+ 4 * longname6; //PREFFER

longName1 = longName2 * (longName3 + longName4

- longName5) + 4 * longname6; //A VOID

以下就是两个缩进方法声明得例子。前者就是常规情形。后者若使用常规得缩进方式将会使第二行与第三行移得很靠右,所以代之以缩进8个空格 //CONVENTIONAL INDENTATION

someMethod(int anArg, Object anotherArg, String yetAnotherArg,

Object andStillAnother) {

、、、

}

//INDENT 8 SPACES TO A VOID VERY DEEP INDENTS

private static synchronized horkingLongMethodName(int anArg,

Object anotherArg, String yetAnotherArg,

Object andStillAnother) {

、、、

}

if语句得换行通常使用8个空格得规则,因为常规缩进(4个空格)会使语句体瞧起来比较费劲。比如:

//不要使用如下缩进

if ((condition1 && condition2)

|| (condition3 && condition4)

||!(condition5 && condition6)) { //不好得换行

doSomethingAboutIt(); //易使这行被忽视

}

//使用如下缩进

if ((condition1 && condition2)

|| (condition3 && condition4)

||!(condition5 && condition6)) {

doSomethingAboutIt();

}

//或者使用如下缩进

if ((condition1 && condition2) || (condition3 && condition4)

||!(condition5 && condition6)) {

doSomethingAboutIt();

}

这里有三种可行得方法用于处理三元运算表达式:

alpha = (aLongBooleanExpression) ? beta : gamma;

alpha = (aLongBooleanExpression) ? beta

: gamma;

alpha = (aLongBooleanExpression)

? beta

: gamma;

2.5空行

空行将逻辑相关得代码段分隔开,以提高可读性。下列情况应该总就是使用两个空行:

?一个源文件得两个片段(section)之间

?类声明与接口声明之间

下列情况应该总就是使用一个空行:

?两个方法之间

?方法内得局部变量与方法得第一条语句之间

?块注释或单行注释之前

?一个方法内得两个逻辑段之间,用以提高可读性

2.6空格

下列情况应该使用空格:

?一个紧跟着括号得关键字应该被空格分开,例如:

while (true) {

、、、

}

注意:空格不应该置于方法名与其左括号之间。这将有助于区分关键字与方法调用。

?空白应该位于参数列表中逗号得后面

?所有得二元运算符,除了"、",应该使用空格将之与操作数分开。一元操作符与操作数之间不因该加空格,比如:负号("-")、自增("++")与自减("--")。例如:

a += c + d;

a = (a + b) / (c * d);

while (d++ = s++) {

n++;

}

printSize("size is " + foo + "\n");

?for语句中得表达式应该被空格分开,例如:

for (expr1; expr2; expr3)

?强制转型后应该跟一个空格,例如:

myMethod((byte) aNum, (Object) x);

myMethod((int) (cp + 5), ((int) (i + 3)) + 1);

2.7注释

Java程序有两类注释:实现注释(implementation comments)与文档注释(document comments)。实现注释就是那些在C++中见过得,使用/*、、、*/与//界定得注释。文档注释(被称为"doc comments")就是Java独有得,并由/**、、、*/界定。文档注释可以通过javadoc工具转换成HTML文件。

注意:频繁得注释有时反映出代码得低质量。当您觉得被迫要加注释得时候,考虑一下重写代码使其更清晰。

2.7.1注释约定

?注释应该增加代码得清晰度。代码注释得目得就是要使代码更易于被同时参与程序设计得开发人员以及其她后继开发人员理解。

?避免使用装饰性内容,也就就是说,不要使用象广告横幅那样得注释语句。典型得就是用星号将她们得内部注释圈起来。这只就是在大量浪费

时间,并不能给最终得产品增加丝毫价值。

?保持注释得简洁。最好得注释应该就是简单明了得注释。注释不必洋洋洒洒,只需提供足够得信息,使别人能够理解您得代码。

?先写注释,后写代码。写代码注释得最好方法就是在写代码之前就写注释。这使您在写代码之前可以想想代码得功能与运行。而且这样确保不

会遗漏注释。另一种方法就是边写代码边写注释。因为注释可以使代码

更易理解,所以在程序开发得过程中,也可以利用这一点。如果打算花

些时间写注释,那么至少您应从这个过程中获得些什么。

?注释信息不仅要包括代码得功能,还应给出原因。例如,下面例子中得代码显示金额在 $1,000 以上(包括 $1,000)得定单可给予 5% 得折扣。

为什么要这样做呢?难道有一个商业法则规定大额定单可以得到折扣

吗?这种给大额定单得特殊就是有时限得呢,还就是一直都这样?最初

得程序设计者就是否只就是由于慷慨大度才这样做呢?除非它们在某

个地方(或者就是在源代码本身,或者就是在一个外部文档里)被注释

出来,否则您不可能知道这些。

例:

if (grandTotal >= 1000、00) {

grandTotal = grandTotal * 0、95;

}

2.7.2实现注释得格式

程序可以有4种实现注释得风格:块(block)、单行(single-line)、尾端(trailing)与行末(end-of-line)。

?块注释

块注释通常用于提供对文件,方法,数据结构与算法得描述。块注释被置于每个文件得开始处以及每个方法之前。它们也可以被用于其她地

方,比如方法内部。在功能与方法内部得块注释应该与它们所描述得代码

具有一样得缩进格式。块注释之首应该有一个空行,用于把块注释与代码

分割开来,比如:

/*

* Here is a block comment、

*/

块注释可以以/*-开头,这样indent(1)就可以将之识别为一个代码块得开始,而不会重排它。

/*-

* Here is a block comment with some very special

* formatting that I want indent(1) to ignore、

*

* one

* two

* three

*/

?单行注释

短注释可以显示在一行内,并与其后得代码具有一样得缩进层级。如果一个注释不能在一行内写完,就该采用块注释(参见"块注释")。单行注

释之前应该有一个空行。以下就是一个Java代码中单行注释得例子:

if (condition) {

/* Handle the condition、 */

、、、

}

?尾端注释

极短得注释可以与它们所要描述得代码位于同一行,但就是应该有足够得空白来分开代码与注释。若有多个短注释出现于大段代码中,它们应

该具有相同得缩进。以下就是一个Java代码中尾端注释得例子:

if (a == 2) {

return TRUE; /* special case */

} else {

return isPrime(a); /* works only for odd a */

}

?行末注释

注释界定符"//",可以注释掉整行或者一行中得一部分。它一般不用于连续多行得注释文本;然而,它可以用来注释掉连续多行得代码段。以

下就是所有三种风格得例子:

if (foo > 1) {

// Do a double-flip、

、、、

}

else {

return false; // Explain why here、

}

//if (bar > 1) {

//

// // Do a triple-flip、

// 、、、

//}

//else {

// return false;

//}

2.7.3文档注释

文档注释描述Java得类、接口、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/**、、、*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前:

/**

* The Example class provides 、、、

*/

public class Example { 、、、

注意顶层(top-level)得类与接口就是不缩进得,而其成员就是缩进得。描述类与接口得文档注释得第一行(/**)不需缩进;随后得文档注释每行都缩进1格(使星号纵向对齐)。成员,包括构造函数在内,其文档注释得第一行缩进4格,随后每行都缩进5格。

若您想给出有关类、接口、变量或方法得信息,而这些信息又不适合写在文档中,则可使用实现块注释或紧跟在声明后面得单行注释。例如,有关一个类实现得细节,应放入紧跟在类声明后面得实现块注释中,而不就是放在文档注释中。文档注释不能放在一个方法或构造器得定义块中,因为Java会将位于文档注释之后得第一个声明与其相关联。

2.7.4快速浏览javadoc

javadoc 得程序可以处理 Java 得源代码文件,并且为 Java 程序产生 HTML 文件形式得外部注释文档。Javadoc 支持一定数目得标记,标识注释文档中各段起始

2.8声明

2.8.1每行声明变量得数量

推荐一行一个声明,因为这样以利于写注释。亦即,

int level; // indentation level

int size; // size of table

要优于,

int level, size;

不要将不同类型变量得声明放在同一行,例如:

int foo, fooarray[]; //避免!

注意:上面得例子中,在类型与标识符之间放了一个空格

2.8.2初始化

在声明局部变量得同时初始化。唯一不这么做得理由就是变量得初始值依赖于某些先前发生得计算。

2.8.3布局

只在代码块得开始处声明变量。(一个块就是指任何被包含在一对大括号"{"与"}"中间得代码。)不要在首次用到该变量时才声明之。这会把注意力不集中得程序员搞糊涂,同时会妨碍代码在该作用域内得可移植性。

void myMethod() {

int int1 = 0; // 在方法得开始处

if (condition) {

int int2 = 0; //在”if ”块得开始处

、、、

}

}

该规则得一个例外就是for循环得索引变量

for (int i = 0; i < maxLoops; i++) { 、、、 }

避免声明得局部变量覆盖上一级声明得变量。例如,不要在内部代码块中声明相同得变量名:

int count;

、、、

myMethod() {

if (condition) {

int count = 0; // 避免!

、、、

}

、、、

}

2.8.4类与接口得声明

当编写类与接口时,应该遵守以下格式规则:

?在方法名与其参数列表之前得左括号"("间不要有空格。

?左大括号"{"位于声明语句同行得末尾。

?右大括号"}"另起一行,与相应得声明语句对齐,除非就是一个空语句,"}"应紧跟在"{"之后。

class Sample extends Object {

int ivar1;

int ivar2;

Sample(int i, int j) {

ivar1 = i;

ivar2 = j;

}

int emptyMethod() {}

、、、

}

2.9语句

2.9.1简单语句

每行至多包含一条语句,例如:

argv++; // 正确

argc--; //正确

argv++; argc--; // 避免!

2.9.2复合语句

复合语句就是包含在大括号中得语句序列,形如"{ 语句 }"。例如下面各段。

?大括号中得语句应该较之复合语句缩进一个层次。

?左大括号"{"应位于复合语句起始行得行尾;右大括号"}"应另起一行并与复合语句首行对齐。。

?大括号可以被用于所有语句,包括单个语句,只要这些语句就是诸如if-else或for控制结构得一部分。这样便于添加语句而无需担心

由于忘了加括号而引入bug。

2.9.3返回语句

一个带返回值得return语句不使用小括号"()",除非它们以某种方式使返回值更为显见。例如:

return;

return myDisk、size();

return (size ? size : defaultSize);

2.9.4if,if-else,if else-if else语句

if-else语句应该具有如下格式:

if (condition) {

statements;

}

if (condition) {

statements;

} else {

statements;

}

if (condition) {

statements;

} else if (condition) {

statements;

} else{

statements;

}

注意:if语句总就是用"{"与"}"括起来,避免使用如下容易引起错误得格式:

if (condition) //避免!省略 {}!

statement;

2.9.5for语句

一个for语句应该具有如下格式:

for (initialization; condition; update) {

statements;

}

一个空得for语句(所有工作都在初始化,条件判断,更新子句中完成)应该具有如下格式:

for (initialization; condition; update);

当在for语句得初始化或更新子句中使用逗号时,避免因使用三个以上变量,而导致复杂度提高。若需要,可以在for循环之前(为初始化子句)或for循环末尾(为更新子句)使用单独得语句。

2.9.6while语句

一个while语句应该具有如下格式

while (condition) {

statements;

}

一个空得while语句应该具有如下格式:

while (condition);

2.9.7do-while语句

一个do-while语句应该具有如下格式:

do {

statements;

} while (condition);

2.9.8switch语句

一个switch语句应该具有如下格式:

switch (condition) {

case ABC:

statements;

/* falls through */

case DEF:

statements;

break;

case XYZ:

statements;

break;

default:

statements;

break;

}

每当一个case顺着往下执行时(因为没有break语句),通常应在break语句得位置添加注释。上面得示例代码中就包含注释/* falls through */。

每个switch语句应包括一个default选项。default选项里得break就是冗余得,但可预防以后增加另一个选项后没有中断执行导致错误得情况出现。2.9.9try-catch语句

一个try-catch语句应该具有如下格式:

try {

statements;

} catch (ExceptionClass e) {

statements;

}

一个try-catch语句后面也可能跟着一个finally语句,不论try代码块就是否顺

利执行完,它都会被执行。

try {

statements;

} catch (ExceptionClass e) {

statements;

} finally {

statements;

}

2.10 SQL

SQL语句中所有得关键字大写,主语句太长需换行时,要求缩进四个空格。子语句提行书写并缩进一个四个空格。当where后带有两个以上得条件时,条件需换行书写,如有逻辑符号则应写在每个条件语句得前面。

例如:

SELECT 字段1,字段2,

字段3,Count(*)

FROM 表1,表2

WHERE 条件1

AND 条件2

OR 条件3

GROUP BY字段1,字段2,

字段3

ORDER BY字段1,字段2,

DESC 字段3

3命名规范

3.1总则

凡在精联公司内进行开发得任何软件项目得命名,无论就是项目名称、文件名、数据库名、表名、字段名、SQL存贮过程名、变量名、函数名、类名、组件名,均应符合以下规定:

●名称全部由下划线、英文字母与数字组成

●在以下情况下可以在名称中出现数字:

?用于命名版本(项目版本、文件版本、函数版本等)

?用于临时性得小程序(如演示程序、测试程序、编程学习程序等)得变

量命名

?因特殊原因两个对象(指项目、文件、数据库等)一定要具有相同得英

文名称时

●如果系统限制名称长度(如某些数据库管理系统中表得命名)低于32位字

符,则以系统限制为标准;否则任何对象(指项目、文件、数据库等)得名

称均不得超过32个字符(命名文件时扩展名不计)

●除以下情况外,名称全部应由有意义得英文单词(当英文单词很难表达时,

可以变通采用汉字拼音)组成,并且不超过5个英文单词

?Word文档得命名

?命名数据库、表、字段名时用到得开头特定字符(mc_)

?临时性项目(如演示程序、测试程序、编程学习程序等)

3.2项目命名

一般来说,项目名称有两个含义。一就是该项目得通用名,如“合理用药系统”,主要用于公司内部交流,它可以就是中文也可以就是英文,且不受本规范得限制;二就是该项目在开发人员进行代码管理时用得英文缩写名,如“PASS”,它用于项目在计算机上得管理。此处主要讨论后一种命名。

●项目名称由该项目得负责人指定

●项目名称用于以下场合:

?如命名Visual Source Safe项目名

?命名该项目在开发人员本地计算机得工作文件夹名

?命名WSAD得、ear文件名

?命名用于保存、拷贝、压缩、电邮传递等场合得文件夹名或文件名

一般情况下项目名不应含版本信息,如遇特殊情况,由可考虑用数字与下划线得方式来指定版本。如PASS_2_0表示PASS 2、0版。

规范得项目名称如:

项目通用名称:健康信息管理系统

项目名称:PIMS

Visual Source Safe项目名:PIMS

该项目各开发人员在本地计算机上得工作文件夹名:PIMS

WSAD项目文件名:PIMS

如导出该项目压缩成一个文件可能名称为:PIMS、ear

3.3命名规则

命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能得信息,以助于理解代码,例如,不论它就是一个常量,包,还就是类。

3.4变量命名机制

3.4.1基本类型变量命名规则:变量类型标识+逻辑名

●变量类型标识用于标识该变量所存储得数据类型,小写字母开头。

●逻辑名为变量所具有得表示具体应用含义得名称,要做到见名知意,书

写时要以字母开头,首字母大写

基本变量类型标识定义如下:

Type Prefix

-------------------

short s

int i/n

char c/ch

double d

boolean b

long l

float f

3.4.2一般常用对象命名规则

以下为一些常用对象前缀。如果有些对象不在以下表格中,请将该对象类名小写做为前缀。

常用对象前缀如下:

Type Prefix Type Prefix

Short short Boolean boolean

Integer int Long long

Char char Float flt

Object obj String str

Date dt Event event

Demenstion obj Size size

Color clr Context ctx

Connection conn RecordSet rs

Statement stmt Command cmd

Window wnd Frame frame

Dialog dlg File file

Button btn Socket skt

Image img InputStream ins

OutputStream outs PrintStream ps

Request request/resq Response response/resp

Double dbl

例如:

int nCount;

long lLength;

Object objResult;

String strUserName;

Frame frameMain;

3.4.3临时变量命名规则

一般临时变量没有一个具体得意思,所以一般临时变量名为Temp或Tmp。其中有一些为C语言或Fortan延续下来得常见临时变量也可以接受:如i ,j ,k 一般用于表示一个临时整型变量。

如:int nTemp ,I

String strTemp

Boolean bTmp

long lTem

3.4.4全局变量、成员变量、局部变量命名规则

局部变量:指在一个程序模块中声明使用得变量,该类变量使用3、3中定义得命名规则(以后称一般命名)。

●全局变量:一般为多个模块公有,所以在命名区别于局部变量,要在一

般命名得变量名前加上前缀:g_

如:int g_nUserCount

●成员变量:就是指类成员变量,用于表示类得一种或一类属性。要在一

般命名得变量名前加上前缀:m_

如: String m_strName

3.4.5常量命名机制

在Java中常量名一般为大写,单词之间用_分隔。

如:public static final int MAX_USER_COUNT = 100 ;

3.5HTML 元素变量命名机制

●form name:frmFormName

●hidden,text:首字母大写,不用下划线。

如:ClientID, OrderID,UserName,Passwd,etc

●button,submit:btnButtonName

如:

3.6JSP 文件命名机制

JSP 文件命名方式:首字母大写,不用下划线。

如:OrderSearch、jsp

ClientMng、jsp

4类、接口、包与编译单元得标准

4.1类得标准

4.1.1命名类

标准 Java 约定就是使用完全得英文描述符,所有单词得第一个字母要大写,并且单词中大小写混合。类名应就是单数形式。

举例:

Customer

Employee

Order

OrderItem

String

4.1.2注释类

以下得信息应写在文档注释中紧靠类得定义得前面:

1. 类得目得。开发者需要了解一个类得一般目得,以判断这个类就是否满

足她们得需求。养成一个注释与类有关得任何好东西得习惯,例如:

它就是否就是一个模式得一部分,或就是使用它时有什么要引起注意

得限制。

2. 已知得问题。如果一个类有任何突出得问题,应说明出来,让其她得开

发者了解这个类得缺点/难点。此外,还应注明为什么不解决问题得原

因。注意:如果问题仅仅针对一个成员方法,那么它应直接与那个成

员方法相联系。

3. 类得开发/维护历史。通常要包含一个历史记录表,列出日期、类得作

者与修改概要。这样做得目得就是让进行维护得程序员了解过去曾对

一个类所做得修改,就是谁做了什么样得修改。

4. 注释出采用得不变量。不变量就是指一套有关实例或类在所有“稳定”

时间片内为“真”得声明。“稳定时间片”就是指在一个成员函数被对

象/类调用之前与立刻调用之后得时间。通过说明一个类得不变量,您

让其她得开发者了解应该如何使用一个类。

5. 并行策略。任何采用Runnable接口得类应充分说明它得并行策略。对

许多程序员来说,并行编程就是一个新得而且复杂得题目,所以需要

投入一些额外得时间来确保人们能够读懂您得东西。说明您得并行策

略以及为什么选取这个策略而不就是其它策略这很重要。常用得并行

策略包括下面一些内容:同步对象;停滞(balking) 对象;警戒

(guarded) 对象;版本 (versioned) 对象;同步策略控制器;接收器。

例:

/**

* A class representing a window on the screen、

* For example:

*

* Window win = new Window(parent);

* w in、show();

*

*

* @see awt、BaseWindow

* @see awt、Button

* @version 1、2 2004-4-9

* @author wangxie

**/

class Window extends BaseWindow {

、、、

}

Java开发规范

Java开发规范

目录 第1章序言 (4) 第2章java一般性研发规范 (5) 2.1 代码格式 (5) 2.1.1包、类、方法的命名规范: (5) 2.1.2方法的命名应注意避免与java中具有特殊意义的名称例如equals, hashCode,clone,finalizer等冲突 (7) 2.1.3Java bean中取得boolean类型的属性值必须使用is****形式命名 (9) 2.1.4if,else,while,for等必须使用{} (9) 2.1.5类必须包含在包里,禁止出现无包的类 (10) 2.1.6类和方法必须拥有注释,注释量占总体代码25%以上,类头部,以及方法 头部的注释应符合javadoc标准。 (11) 2.2 基本语法 (12) 2.2.1不能随意捕捉异常,原则上谁捕捉谁处理 (12) 2.2.2if,while,try,finally,switch ,synchronized ,static instantiation 里面应有相应的逻辑处理,不能为空。 (13) 2.2.3在处理循环中,不能在程序中人为的改变步长。 (14) 2.2.4将简单类型int,short,float,double等转化成字符串时,需使用其对 应类的toString方法。 (14) 2.2.5javaBean中hashCode,以及equals方法必须同时override。 (15) 2.2.6懒式方式创建对象:不能采用双检查惯用法 (18) 2.2.7不能在finally中返回值。 (19) 2.2.8Boolean实例化时,应用使用Boolean.valueOf,Boolean.TRUE, Boolean.FALSE。 (19) 2.2.9Integer,Byte,Short,Long等实例化时,应用使用valueOf (20) 2.2.10对于多个if语句嵌套的情况下能够整合尽量整合。 (20) 2.2.11override function,不能只有super.function语句,否则视为无效代码 21 2.2.12Collection.toArray的注意事项。 (21) 2.2.13对于BigDecimal方法,应避免使用float值,double值进行创建,应使 用字符串形式创建。 (22) 2.2.14String,BigDecimal,BigInteger等值类型调用replace,add等方法的注 意事项。 (23) 2.2.15需要注意的引起NullException的语句。 (23) 2.2.16ResultSet使用next时,需要判断是否具有记录再进行一下步操作。 25 2.2.17字符串使用相应的规则。 (25) 2.2.18禁止直接调用 System.gc(),System.getRuntime().gc(),System.runFinalization()。 (27) 2.2.19finalize相应的规则。 (27) 2.2.20禁止在代码中使用System.out,ex.printStackTrace打印日志。 (28) 2.2.21系统资源释放(谁创建的,谁关闭) (29) 2.2.22使用Clone时相应的规则。 (32) 2.2.23java Bean类必须实现Serialize接口。 (33)

JAVA代码规范

Java代码规范 1. 标识符命名规范 1.1 概述 标识符的命名力求做到统一、达意和简洁。 1.1.1 统一 统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。 1.1.2 达意 达意是指,标识符能准确的表达出它所代表的意义,比如:newSupplier, OrderPaymentGatewayService等;而supplier1, service2,idtts等则不是好的命名方式。准确有两成含义,一是正确,而是丰富。如果给一个代表供应商的变量起名是order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。 1.1.3 简洁 简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长,transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。 1.1.4 骆驼法则 Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。比如: supplierName, addNewContract,而不是supplier_name, add_new_contract。 1.1.5 英文vs 拼音

华为JAVA编程规范

1 Java 编程规范 1.1 排版 1.1.1 规则 规则1程序块要采用缩进风格编写,缩进的空格数为4个,不允许使用TAB缩进。(1.42+) 说明:缩进使程序更易阅读,使用空格缩进可以适应不同操作系统与不同开发工具。 规则2分界符(如大括号…{?和…}?)应各独占一行,同时与引用它们的语句左对齐。在函数体的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序 或者static、,synchronized等语句块中都要采用如上的缩进方式。(1.42+) 示例: if (a>b) { doStart(); } 规则3较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐, 语句可读。(1.42+) 示例: if (logger.isDebugEnabled()) { logger.debug("Session destroyed,call-id" + event.getSession().getCallId()); } 规则4不允许把多个短语句写在一行中,即一行只写一条语句(1.42+) 说明:阅读代码更加清晰 示例:如下例子不符合规范。 Object o = new Object(); Object b = null; 规则5if, for, do, while, case, switch, default 等语句自占一行,且if, for, do, while,switch等语句的执行语句无论多少都要加括号{},case 的执行语句中如果定义变量必须加括号{}。 (1.42+) 说明:阅读代码更加清晰,减少错误产生 示例: if (a>b) { doStart(); }

JAVA开发规范文档

Java 开发规范文档 一:目的 使本组织能以标准的,规范的方式设计和编码。通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;并以此形成开发小组编码约定,提高程序的可靠性,可读性,可修改性,可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。 二:代码组织与风格 1:长度:为便于阅读和理解,单个函数的有效代码长度当尽量在100行以内(不包括注释行),当功能模块过大时往往采用使用子函数将相应的功能抽取出来,这也有利于提高代码的重用度。 2:单个类不宜过大,当出现此类过大时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。尽量避免使用大类和长方法。3:间隔:类,方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。操作符两端应当各空一个字符以增加可读性。 三:注释 1:注释应该增加代码的清晰度。代码注释的目的时要使代码更易于被其他开发人员等理解。2:保持注释的简洁。 3:注释信息应该包括代码的功能。 4:除变量定义等较短语句的注释使用行尾注释外,其他注释当避免使用行尾注释。 5:JavaDoc规范 对类,方法,变量等注释需要符合javadoc规范,对每个类,方法都应详细说明其功能条件,参数等。类注释中应当包含版本和作者信息。 1)类,接口注释在类,接口定义之前当对其进行注释,包括类,接口的目的,作用,功能,继承于何种父类,实现的接口,实现的算法,使用方法,示例程序等。 2)方法注释以明确该方法功能,作者,各参数含义以及返回值等。

3)其他注释应对重要的变量及不易理解的分支条件表达式加以注释,以说明其含义等。四命名规范 1:对变量,类,接口及包的命名应该使用英文。严禁使用汉语拼音及不相关单词命名。更不可以使用汉字来进行命名。采用大小写混合,提高名字的可读性。一般应该采用小写字母,但时类和接口的名称的首字母,以及任何中间单词的首字母应该大写。包名全部小写。 2:尽量少用缩写,但如果一定要用,当使用公共缩写和习惯缩写等,如implement可缩写为impl,manager可缩写成mgr等。 3:包名一般以项目或模块名命名,少用缩写和长名,一律小写。 包名按照如下规定组成[基本包].[项目名].[模块名].[子模块名].…. 如:org.skyinn.skyhome.dao.hibernate。 不得将类直接定义在基本包下,所有项目中的类,接口等都当定义在各自的项目和模块包中。 4:类,接口所有单词首字母大写,最好能够见名知意。一般采用名词。接口可带I前缀。 或able,dao后缀。 5:字段常量采用完整的英文大写单词,单词之间用下划线连接,如DEFAULT_V ALUE. 6:变量和参数对不易识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX,hasXXX等等。除第一个单词外其余单词的首字母大写。7:集合采用复数名称来表示队列中存放的对象类型,名词采用完整的英文描述。 例如:Vector vProducts= new Vector(); Array aryUsers= new Array(); 8:方法方法的名称应采用完整的英文描述,大小写混合使用:所有中间单词的第一个字母大写。方法名称的第一个单词常常采用一个强烈动作色彩的动词。取值类使用get前缀,设置类使用set前缀。例如getName(),setSarry()。 9:异常类名由表示该异常类型的单词和Exception组成,如ActionException。异常实例一般使用e,ex等。 10:数组的命名 数组应该总是用下面的方式来命名:byte[] buffer; 而不是:byte buffer[]; 五:类与接口 1:基本原则:一个类只做一件事情。另一个原则时根据每个类的职责进行划分,比如用User 来存放用户信息,而用UserDAO来对用户信息进行数据访问操作,用UserServer对用户信息的业务操作等等。多个类中使用相同方法时将其方法提到一个接口中或使用抽象类,尽量提高重用度。不希望被实例化的类的缺省构造方法声明为private。 2:一般而言,接口定义行为,而抽象类定义属性和共有行为,注意2者的取舍,在设计中可由接口定义公用的行为,由一个抽象类来实现其部分或全部方法,以给子类提供统一的行为为定义。 六:方法 一个方法只完成一项功能。方法参数类型和参数返回值尽量接口化,以屏蔽具体的实现细节,提高系统的可扩展性,例如:public void addUser(List userList){} public List listAllUsers(){} 七:Web 命名规范 一:jsp页面命名 对于某个功能块的增删改查页面定义,最好使用

华为Java语言编码规范标准

Java语言编码规范 Prepared by 拟制Date 日期 yyyy-mm-dd Reviewed by 评审人Date 日期 yyyy-mm-dd Approved by 批准Date 日期 yyyy-mm-dd

Revision Record 修订记录

Table of Contents 目录 1. 范围 (4) 2. 规范性引用文件 (4) 3. 术语和定义 (4) 4. 排版规范 (5) 4.1. 规则 (5) 4.2. 建议 (7) 5. 注释规范 (9) 5.1. 规则 (9) 5.2. 建议 (15) 6. 命名规范 (17) 6.1. 规则 (17) 6.2. 建议 (18) 7. 编码规范 (20) 7.1. 规则 (20) 7.2. 建议 (24) 8. JTEST规范 (26) 8.1. 规则 (26) 8.2. 建议 (27)

1.范围 本规范规定了使用Java语言编程时排版、注释、命名、编码和JTEST的规则和建议。 本规范适用于使用Java语言编程的产品和项目。 2.规范性引用文件 下列文件中的条款通过本规范的引用而成为本规范的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本规范。 3.术语和定义 规则:编程时强制必须遵守的原则。 建议:编程时必须加以考虑的原则。 格式:对此规范格式的说明。 说明:对此规范或建议进行必要的解释。 示例:对此规范或建议从正、反两个方面给出例子。

java编码规范考试题答案

一、单选题 1. 如下关于集合类的描述错误的是B A. 含有集合意义的属性命名,尽量包含其复数的意义 B. 集合中的数据不需要释放,垃圾回收器会自动回收 C. 集合必须指定模板类型 D. 使用集合类时要设置初始化容量 2. 关于线程以下说法错误的有B A. 新起一个线程,都要使用Thread.setName(“…”)设置线程名 B. 在JDK1.5或更新的版本中,若字符串拼接发生在单线程环境,使用StringBuffer C. 对多线程访问的变量、方法,必须加锁保护,避免出现多线程并发访问引起的问题 D. 线程使用时,要在代码框架中使用线程池,避免创建不可复用的线程;禁止在循环中创建新线程,否则会引起JVM资源耗尽 3. 下面哪个是推荐使用的对称密码算法B A. DES B. AES C. SHA D. RSA

4. 以下说法正确的有C A. 程序中的一些状态多直接用数字表示,如函数执行成功return 1 B. 对于表示函数执行错误,多用约定的错误码来标识 C. 用有意义的静态变量或者枚举来代替数字型的程序状态,如函数执行成功return SUCCESS D. 程序中的魔鬼数字并不可怕,需要所有开发人员努力理解这些数字的含义 5. 下列错误使用异常的做法是D A. 在程序中使用异常处理还是使用错误返回码处理,根据是否有利于程序结构来确定,并且异常和错误码不应该混合使用,推荐使用异常 B. 一个方法不应抛出太多类型的异常。throws/exception子句标明的异常最好不要超过三个 C. 异常捕获尽量不要直接catch (Exception ex),应该把异常细分处理 D. 程序内抛出的异常本身就可说明异常的类型、抛出条件,可不填写详细的描述信息。捕获异常后用exception.toString()取到详细信息后保存 6. 关于命名规范,以下说法错误的有D A. 属性名使用意义完整的英文描述,第一个单词的字母使用小写,剩余单词首字母大写其余字母小写的大小写混合法。属性名不能与方法名相同 B. 方法名使用类意义完整的英文描述:第一个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法 C. 方法中,存取属性的方法采用setter 和getter方法,动作方法采用动词和动宾结构

JAVA源代码规范

JAVA代码规范 (初稿) 2004、4 ?版本更新信息 本版本创建/修改、维护、批准涉及人员如下: 创建/修改者:XX 维护者:XX 批准者:XX 具体版本更新记录如表1-1: 表1-1 版本更新记录 修改方式:A-增加 M-修改 D-删除?目得 本文提供一整套编写高效可靠得 Java 代码得标准、约定与指南。它们以安全可靠得软件工程原则为基础,使代码易于理解、维护与增强灵活性。通过遵循一套通用得程序设计标准,显著提高 Java 软件开发者得生产效率,为开发团队得程序设计带来更大得一致性,使软件开发团队得效率明显提高。 ?规范得执行 本文档适用于公司内进行软件开发得所有技术人员,即公司内软件开发人员编写得所有源代码都必须遵循本规范。 除临时性项目之外得任何项目均应严格按照此标准执行,“临时性项目”指:?为市场推广目得而编写得示程序 ?为一次性用途而编写得临时性小程序 为学习目得而编写得测试程序 ?文档类别

本文档属标准规范类得项目限制级文档,未经总经理及总经理授权人员批准,不得提供公司以外得人员阅读与使用。 ?版本更新条件 本文档得定期评审时间为每年得1月,评审及修订步骤依据SEPG工作规范规定。此外,如遇下列条件可进行评审,并根据评审结果决定就是否需要进行修订: ?本文档所列得引用得标准已经更新。 ?本文档得使用者若对本文档有任何评论、建议或意见,请通过企业内部网络发电子邮件给SEPG,所收到得电子邮件将会在评审与修订时给予充分 得考虑。 ?使用对象 本文档得使用对象包括: ?项目管理者 ?质量保证人员 ?软件开发人员 目录 1介绍 (4) 1、1为什么要有编码规范 (4) 2通用代码格式 (4) 2、1文件组织 (4) 2、2缩进 (5) 2、3行长度 (6) 2、4换行 (6) 2、5空行 (7) 2、6空格 (7) 2、7注释 (8) 2、7、1注释约定 (8) 2、7、2实现注释得格式 (9) 2、7、3文档注释 (10) 2、7、4快速浏览javadoc (10) 2、8声明 (11) 2、8、1每行声明变量得数量 (11) 2、8、2初始化 (11) 2、8、3布局 (11) 2、8、4类与接口得声明 (12) 2、9语句 (12) 2、9、1简单语句 (12) 2、9、2复合语句 (13) 2、9、3返回语句 (13) 2、9、4if,if-else,if else-if else语句 (13)

Java编程规范

Java编程规范本文引用阿里Java开发手册。GitHub阅读地址: 目录 编程规约 - 命名规约 - 常量定义 - 格式规范 - OOP规约 - 集合处理 - 并发处理 - 控制语句 - 注释规约 - 其他 - 异常处理 - 建表规约 - 索引规约 - SQL规约

- ORM规约 编程规约 命名规约 1、【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 反例: _name / __name / $Object / name_ / name$ / Object$1 2、【强制】所有编程相关的命名严禁使用拼音与英语混合的方式,更不允许直接使用中的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即纯拼音的命名方式也要避免采用。 反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 变量 = 3; 正例: ali / alibaba / taobao / cainiao / aliyun / youku / hangzhou 等国际通用的名称,可视为英文。12345 3、【强制】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名) DO / DTO / VO / DAO 等。 正例: MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例: macroPolo / UserDo / XMLService / TCPUDPDeal

/ TAPromotion123 4、【强制】方法名、参数名、成员变量、局部变量都统一只用 lowerCamelCase 风格,必须遵从驼峰形式。 正例: localValue / getHttpMessage() / inputUserId1 5、【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 正例: MAX_STOCK_COUNT 反例: MAX_COUNT123 6、【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。 7、【强制】中括号是数组类型的一部分,数组定义如下:String[] args ; 反例:请勿使用 String args[] 的方式来定义1 8、【强制】 POJO 类中的任何布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是 isSuccess(), RPC框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。1 9、【强制】包名统一使用小写,点分隔符之间有且仅有一

(完整版)阿里巴巴编码规范(Java)题库

多选 1.如何处理单元测试产生的数据,下列哪些说法是正确的?ABC A .测试数据入库时加特殊前缀标识。 B .测试数据使用独立的测试库。 C .自动回滚单元测试产生的脏数据。 D .无须区别,统一在业务代码中进行判断和识别。 多选 2.关于并发处理,下列哪些说法符合《阿里巴巴Java开发手册》:ABC A .线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。 B .同步处理时,能锁部分代码区块的情况下不要锁整个方法;高并发时,同步调用应该考虑到性能损耗。 C .创建线程或线程池时,推荐给线程指定一个有意义的名称,方便出错时回溯。 D .推荐使用Executors.newFixedThreadPool(int x)生成指定大小的线程池。(线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式) 多选 3.下列哪些说法符合《阿里巴巴Java开发手册》:ACD A .对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性等要坚决从程序中清理出去,避免造成过多垃圾。 B .永久弃用的代码段注释掉即可,即不用加任何注释。 C .对于暂时被注释掉,后续可能恢复使用的代码片断,在注释代码上方,统一规定使用三个斜杠(///)来说明注释掉代码的理由。 D .不要在视图模板中加入任何复杂的逻辑。 多选 4.关于分页查询,下列哪些说法符合《阿里巴巴Java开发手册》:ABC A .分页查询,当统计的count为0时,应该直接返回,不要再执行分页查询语句。 B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。 C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。 D .可使用存储过程写分页逻辑,提高效率。

java项目团队开发规范

项目团队开发规范

修订历史记录

目录 1引言 (6) 1.1 编写目的 (6) 1.2 预期读者 (6) 1.3 编写背景 (6) 2概述 (7) 2.1 目标 (7) 2.2 修改及完善 (7) 3详细规范 (7) 3.1 使用的工具 (7) 3.2 框架设计 (7) 3.3 包目录 (8) 3.4 编码规范 (10) 3.4.1 目的 (10) 3.4.2 依据 (10) 3.4.3 具体规范 (10) 3.4.3.1 编码风格 (10) 3.4.3.1.1 缩进 (10) 3.4.3.1.2 空格 (11) 3.4.3.1.3 对齐 (12) 3.4.3.1.4 空行 (12)

3.4.3.1.5 代码长度 (13) 3.4.3.1.6 行数 (13) 3.4.3.1.7 注释 (14) 3.4.3.2 代码效率 (17) 3.4.3.2.1 综述 (17) 3.4.3.2.2 具体实现 (17) 3.4.3.3 异常处理 (17) 3.4.3.3.1 处理CHECK 异常与UNCHECK异常 (17) 3.4.3.4 程序调试 (17) 3.4.4 日常交流 (18) 3.4.4.1 互相促进 (18)

1引言 1.1 编写目的 本文档作为项目团队开发规范的说明书,描述了项目开发过程中的使用的工具,框架,代码编写规范及注意问题,作为项目团队建设,开发及测试工作的依据。 1.2 预期读者 本文档的预期读者包括以下几类: ?项目组长 ?项目组全体成员 1.3 编写背景 根据公司现有的开发状况,决定组件稳定的项目开发团队,制定全体团队成员共识的开发规范,有助于提高项目开发的效率、项目团队整体水平的提升。

Java代码编写规范(参考)

命名规范: 1.所有的标识都只能使用ASCII字母(A-Z或a-z)、数字(0-9)和 下划线”_”。 2.一个唯一包名的前缀总是用全部小写的字母。 3.类名是一个名词,采用大小写混合的方式,每个单词的首字母大 写。 4.接口的大小写规则与类名相似。 5.方法名是一个动词或是动词词组,采用大小写混合的方式,第一 个单词的首字母小写,其后单词的首字母大写。 6.变量名的第一个字母小写,任何中间单词的首字母大写,变量名 应简短且可以顾名思义,易于记忆。避免单个字符的变量名,除非是一次性的临时变量。 7.常量的声明应该全部大写,每个单词之间用”_”连接。 注释规范: 1.注释尽可能使用”//”,对于所有的Javadoc的注释使用/***/,而 临时对代码块进行注释应尽量使用/**/。 2.所有的源文件都应该在开头有一个注释,其中列出文件名、日期 和类的功能概述。每个方法必须添加文档注释(main除外)。 3.每个属性必须加注释。 4.代码中至少包含15%的注释。 5.注释使用中文。

缩进排版规范: 1.避免一行的长度超过60个字符。 2.使用Eclipse源代码的格式化功能完成代码的缩进排版。 文件名规范: 1.一个Java源文件只能储存一个Java类。 2.文件名与Java类相同。 3.一个类文件不超过200行。 声明规范: 1.一行声明一个变量。 2.不要将不同类型变量的声明放在同一行。 3.只在代块的开始处声明变量。 4.所有的变量必须在声明时初始化。 5.避免声明的局部变量覆盖上一级声明的变量。 6.方法与方法直接以空行分隔。 语句规范: 1.每行至少包含一条简单语句。 2.在return语句中,返回值不使用小括号”()”括起来。 3.If月总是用{和}括起来。 4.在for语句的初始化或者更新子句中,避免因使用3个以上变量, 而导致复杂度提高。 5.当switch的一个case顺着往下执行时(因为没有break),通常 应在break语句的位置添加注释。

华为JAVA编码规范

1.程序块采用缩进风格,空格为4个. 说明: 对于开发工具自动生成的代码可以不一致 2.分界符(如大括号{和})应各自占一行并且在同一列,同时与引用它们的语句左 对齐,在方法的开始,类和接口的定义,以及if,for,do,while,switch,case语句都要采用上述缩进 说明: for(…) { …//your code } 3.较长(>80字符)的语句,表达式和参数要分多行,长表达式要在低优先级操作符 划分新行,操作符放在行首,新行要适当缩进,整齐,语句可读. 说明: if(filename != null && new File(logPath+filename).length() < logConfig.getFileSize()) { …//your code } 4.一行只写一条语句 说明: LogFilename wow = null; LogFilename that = null; 5.if,for,do,switch,while,case,default各占一行,它们的执行语句无论多少都要加{} 说明: if(writeToFile) { writeFileThread.interrupt(); } 6.相对独立的程序块,变量,说明要加空行 说明: if(log.getLevel() < log.getRecord()) { return ; } //空行

LogWrite writer; 7.对齐只用空格键,不用TAB键 说明: 以免使用不同的编辑器阅读程序时,因TAB键所设置的空格数不同而造成程序布局不整齐,JBuildr,UltraEdit等编辑环境,支持行首TAB替换成空格,应将该选项打开 8.两个以上的关键字,变量,常量进行对等操作时,操作符之前,之后或前后要加空 格,进行非对等操作时,如果是关系密切的立即操作符,后面不加空格(如.操作符) 说明: 采用这种松散方式编写代码目的是让程序更加清晰,由于空格所产生的清晰性是相对的,所以在已经很清晰的语句中没有必要留空格,如果语句已足够清晰,则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为java中括号已经是很清晰的标志了.在长句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部中不加空格,给操作符留空格时不要连续留两个以上空格 9.类属性和方法不要交叉放置,不同存取范围的属性和方法也不要交叉放置 说明: 类定义:{ 类公有属性定义; 类保护属性定义; 类私有属性定义; 类公有方法定义; 类保护方法定义; 类私有方法定义; } 10.源程序的有效注释量必须在30%以上 11.包的注释写入一个名为package.html的html格式的说明文件放入当前路径 12.包的注释内容:本包作用,详细描述本包内容,产品模块名称及版本,公司版本 说明: 一句话描述 详细描述 产品模块
公司版本信息

(完整word版)JAVA代码规范详细版

JAVA代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。如果两边有冲突,以SUN Java标准为准。 1. 标识符命名规范 1.1 概述 标识符的命名力求做到统一、达意和简洁。 1.1.1 统一 统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。 1.1.2 达意 达意是指,标识符能准确的表达出它所代表的意义,比如:newSupplier, OrderPaymentGatewayService等;而supplier1, service2,idtts等则不是好的命名方式。准确有两成含义,一是正确,而是丰富。如果给一个代表供应商的变量起名是order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。 1.1.3 简洁 简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长,transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。 1.1.4 骆驼法则 Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。比如: supplierName, addNewContract,而不是supplier_name, add_new_contract。

java编程规范+数据库命名规范

Java编程规范 本编程规范建立在标准的Java编程规范的基础上,如和标准的Java编程规范有冲突,以本编程规范为准。 1.1 程序结构 包名 引入包/类名 类注释 类 常量//常量注释 构造器注释 构造器 构造器注释 构造器 方法注释 方法 方法注释 方法 1.2 命名规范 命名规范使得程序更易理解,可读性更强。并且能够提供函数和标识符的信息。 文件命名规范: java程序使用如下的文件名后缀: 文件类型后缀 Java 源文件.java Java 字节码文件.class 对系统的文件命名方式有待于根据实际业务决定。 包命名规范: 包名应该唯一,它的前缀可以为任何小写的ASCII字符,包名按照公司内部的命名规范,这些规范指出了某种目录名,主要包括部门,项目,机器,或者登录名。 命名规则为: app.系统名.模块名.xxx.xxx 包命名举例: app.oa.interceptor.xxx app.oa.sys.xxx 类命名规范: 类名应该是名词,并且是大小写混合的。首字母要大写。尽量保证类名简单并且描述性强。避免使用只取单词首字母的简写或者单词的缩写形式,除非缩写形式比单词的完整形式更常用(例如:URL或者HTML)。文件名必须和public的类名保持一致,注意大小写(JBuilder 等一些编译器可以忽略大小写,要特别注意)。如是实现类命名后缀+Impl。 类命名举例: classLoginAction; classUserServiceImpl; 接口命名规范:

接口命名方式与类命名方式相同。 接口命名举例: interfaceIUserService; interfaceSysYhjsDAO; 方法命名规范; 方法名应该为动词,并且是大小写混合的。首字母要小写,方法名的第 二个单词的第一个字母大写。 方法命名举例: String getNoticeNo(); Collection findByCondition(String); 变量命名规范 变量,以及所有的类实例应为首字母小写的大小写混合形式。变量名的第二个单词 的首字母大写。变量名的首字母不能为下划线或者$符。 变量名应该尽可能的短小,但要有意义。变量名应该便于记忆,也就是说变量名应 该尽可能的做到见名知意。除了暂时使用的变量外(一般用于循环变量),应该避免使 用只有一个字母的变量名。对于临时变量一般说来:i,j,k,m,n代表整型变量。c,d,e代表字符型变量。 变量命名举例: String dataType; String name; inti; char c; 常量命名规范: 声明为类常量的变量或者ANSI常量应该全部为大写字母,并且每个单词间用下划 线“_”隔开。为了便于调试,应避免使用ANSI常量。 常量命名举例: static final int MIN_WIDTH = 4; 1.3 注释规范 Java 提供了两种类型的注释:程序注释和文档注释。程序注释是由分隔符/*…*/,和// 隔开的部分,这些注释和C++ 中的注释一样。文档注释(即“doc 注释”)是Java 独有的。由分隔符/**…*/隔开。使用javadoc工具能够将文档注释抽取出来形成HTML 文件。程序注释主要是对程序的某部分具体实现方式的注释。文档注释是对程序的描述性注释,主要是提供给不需要了解程序具体实现的开发者使用。注释应该是代码的概括性描述,提供不易直接从代码中得到的信息,并且只包含对阅读和理解程序有用的信息。例如注释中包含相应的包如何编译或者在哪个目录下,而不应该包括这个包驻留在哪儿的信息。注释中可以描述一些精妙的算法和一些不易理解的设计思想,但应该避免那些在程序代码中很清楚的表达出来的信息。尽可能的避免过时的信息。错误的注释比没有注释更有害。经常性的注释有时也反映出代码质量的低下。 …程序注释: 程序注释有四种格式:块注释格式,单行注释,跟随注释,行尾注释 ?块注释格式 块注释主要用于描述:文件、方法、数据结构和算法。一般在文件或者方法定义的 之前使用。也可以用在方法定义里面,如果块注释放在函数或者方法定义里,它必须与它所描述的代码具有相同的缩进形式。

java代码规范要求(公司用-补充版)

代码规范要求 为保证我公司研发代码的规范性、可读性,特制定该代码规范: 1、代码应遵循国际java代码规范 2、代码中所有switch(param){case int:break;}中case 参数应该为在类开始时定义的字符串,以增加后续研发中的可读性。例:private final int company=0; switch(param){case company:break;}不允许出现case0,case1等字样。 3、在对数据库进行大量数据读取时,应采用jdbc方式读取。以增快响应速度,减少内存消耗。数据量超过万单位时必须采用jdbc读取数据库,且应分页读取数据库。 4、方法作用必须注释,方法中传递的参数应该有注释,全局变量,局部变量都应有注释,以说明变量的意义。如方法会被多次调用,或应对二次开发则应注明返回值例:return Boolean true成功false失败; 5、代码中应该采用try catch捕获异常,且应该处理常见异常。 6、代码呈现页面不能出现null字样。 7、代码测试应用及所需捕获异常或输出信息应该采用log4j 进行输出。杜绝出现System.out.println();字样 8、代码不应出现重复定义,同一方法不能多次调用数据库,

如一个方法中需要多次调用数据库则应拆分为两个或多个。 9、同一方法中代码量超过50行则应进行拆分。 10、代码应该采用format格式化。 11、代码已经提交或二次开发时,应注明修改时间修改人修改原因修改后提交参数的内容 12、在未进行实例化的参数判断是否为空时,应该null在前例:if(null!=param) 13、在判断变量是否为空时,尽量避免采用if else应采用Parame==null?”0”:parame;进行判断赋值 14、代码应遵循可读性原则,不能出现过于冗长的代码。 15、多次在不同类中反复调用且内容相同的方法,应该写到公用代码中进行调用。 16、已经失效,且不会被调用的代码应该注销、删除。 17、代码在未经测试时,不要进行提交,以免造成现调用的其他类出现错误。 18、项目的配置文档应该遵循规范格式,尽量增加注释。 19、页面中的js脚本应该具备可读性、增加注释。Js脚本的规范遵从国际js规范。 20、页面中提交的必要的变量参数应该有验证。 21、页面提交的信息或执行时间较长、页面上传文档时应该提示用户正在执行等字样。 22、页面ext的方法复写定义应该在项目中为唯一,不得出

Java编程规范

Java编程规范 目录 Java编程规范 (1) 1编码规则 (1) 2命名规范 (7) 2.1类名、变量名(非final)、方法名 (7) 2.2驼峰式命名 (7) 2.3不能使用没有任何含义的英文字母进行命名 (7) 2.4不能使用拼音进行命名,统一使用准确的英文进行命名 (8) 2.5包名 (8) 2.6接口与类的命名 (8) 2.7抽象类命名 (8) 2.8实现类命名 (8) 2.9工具类命名 (8) 2.10变量命名 (8) 2.115、方法命名 (9) 2.12系统的命名约定 (9) 1编码规则 1、数据库操作、IO操作等需要使用结束close()的对象必须在try -catch-finally 的finally中close(),如果有多个IO对象需要close(),需要分别对每个对象的close()方法进行try-catch,防止一个IO对象关闭失败其他IO对象都未关闭。 手动控制事务提交也要进行关闭,对大对象进行关闭操作 示例: try { // ... ... } catch(IOException ioe) { //... ... } finally { try { out.close();

} catch(IOException ioe) { //... ... } try { in.close(); } catch(IOException ioe) { //... ... } } 2、系统非正常运行产生的异常捕获后,如果不对该异常进行处理,则应该记录日志。 说明:此规则指通常的系统非正常运行产生的异常,不包括一些基于异常的设计。若有特殊原因必须用注释加以说明。 logger.error(ioe,“[类.方法]描述”,参数); 示例: try { //.... ... } catch(IOException ioe) { logger.error(ioe); } 3、自己抛出的异常必须要填写详细的描述信息。 说明:便于问题定位。 示例: throw new IOException("Writing data error! Data: "+ data.toString()); 4(删除)、在程序中使用异常处理还是使用错误返回码处理,根据是否有利于程序结构来确定,并且异常和错误码不应该混合使用,推荐使用异常。 说明: 一个系统或者模块应该统一规划异常类型和返回码的含义。 但是不能用异常来做一般流程处理的方式,不要过多地使用异常,异常的处理效率比条件分支低,而且异常的跳转流程难以预测。

java代码规范详细版

Java代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。如果两边有冲突,以SUN Java标准为准。 1. 标识符命名规范 1.1 概述 标识符的命名力求做到统一、达意和简洁。尽量做到每个人按照规范来,多人开发如一人开发一样。 1.1.1 统一 统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。 1.1.2 达意 达意是指,标识符能准确的表达出它所代表的意义,比如:newSupplier, OrderPaymentGatewayService等;而supplier1, service2,idtts等则不是好的命名方式。准确有两成含义,一是正确,而是丰富。如果给一个代表供应商的变量起名是order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。 1.1.3 简洁 简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长,transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。 1.1.4 骆驼法则

相关文档
最新文档