JAVA 开发规范

JAVA 开发规范
JAVA 开发规范

服务端开发规范(Java)v1.0

目录

?前言

?源文件基础

?源文件结构

?格式

?命名约定

?编程实践

?JavaDoc

?服务端接口规范

1前言

本标准系团队首次发布实施,主要针对团队内所有软件产品源代码范围的Java 编码风格,对 Java 文件的文件组织、代码风格、注释、命名、声明、异常、习惯等方面均作出规范,以保障团队项目代码的易维护性和编码安全性。

1术语说明

在本文档中,除非另有说明:

?术语 class 可表示一个普通类,枚举类,接口或是 annotation 类型(@interface);

?术语 comment 只用来指代实现的注释 (implementation comments),我们不使用文档注释(documentation comments)一词,而是用 Javadoc;

?其他的术语说明会在后面的文档出现。

1.1指南说明

本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循Google 编程风格,但并不意味着这是展现这些代码的唯一方式。示例中的格式选择不应该被强制定为规则。源文件基础

2.1 文件名

源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。

2.2 文件编码:UTF-8

源文件编码格式为UTF-8。

2.3 特殊字符

2.3.1 空白字符

除了行结束符序列,ASCII 水平空格字符(0x20,即空格)是源文件中唯一允许出现的空白字符,这意味着:

?所有其它字符串中的空白字符都要进行转义;

?制表符不用于缩进。

2.3.2 特殊转义序列

对于具有特殊转义序列的任何字符(\b, \t, \n, \f, \r, \“, \‘及),我们使用它的转义序列,而不是相应的八进制(比如\012 )或Unicode(比如\u000a )转义。

2.3.3 非ASCII字符

对于剩余的非ASCII 字符,是使用实际的Unicode 字符(比如∞),还是使用等价的Unicode 转义符(比如\u221e ),取决于哪个能让代码更易于阅读和理解。

Tips: 在使用Unicode 转义符或是一些实际的Unicode 字符时,建议做些注释给出解释,这有助于别人阅读和理解。

例如:

String unitAbbrev = "μs"; | 赞,即使没有注释也非常清晰String unitAbbrev = "\u03bcs"; // "μs" | 允许,但没有理由要这样做

String unitAbbrev = "\u03bcs"; // Greek letter mu, "s" | 允许,但这样做显得笨拙还容

易出错

String unitAbbrev = "\u03bcs"; | 很糟,读者根本看不出这是什么return '\ufeff' + content; // byte order mark | Good,对于非打印字符,使用转义,并在必要时写上注释

Tips: 永远不要由于害怕某些程序可能无法正确处理非ASCII 字符而让你的代码可读性变差。当程序无法正确处理非ASCII 字符时,它自然无法正确运行,你就会去fix 这些问题的了。(言下之意就是大胆去用非ASCII 字符,如果真的有需要的话)

2.4 文件长度

按照sun 的规范,代码行数尽量不要超过2000行。

源文件结构

一个源文件包含一下部分(按顺序):

1.许可证或版权信息(如有需要);

2.package 语句;

3.import 语句;

4.一个顶级类(只有一个);

5.以上每个部分之间用一个空行隔开。

3.1 许可证或版权信息

如果一个文件包含许可证或版权信息,那么它应当被放在文件最前面。

3.2 package 语句

package 语句不换行,列限制(4.4节) 并不适用于package 语句。(即一个package 语句只写在一行里)。

3.3 import语句

3.3.1 import 不要使用通配符

即,不要出现类似这样的import 语句:import java.util.*;

3.3.2 不要换行

import 语句不换行,列限制(4.4节) 并不适用于import 语句。(每个import语句独立成行)

3.3.3 顺序和间距

import 语句可分为以下几组,按照这个顺序,每组由一个空行分隔:

1.所有的静态导入独立成组

https://www.360docs.net/doc/9b1531011.html,.google imports(仅当这个源文件是在com.google 包下)

3.第三方的包。每个顶级包为一组,字典序。例如:android, com, junit, org, sun, java,

javax

4.组内不空行,按字典序排列。

3.4 类声明

3.4.1 只有一个顶级类声明

每个顶级类都在一个与它同名的源文件中(当然,还包含.java后缀)。

例外:package-info.java,该文件中可没有package-info 类。

3.4.2 类成员顺序

类的成员顺序对易学性有很大的影响,但这也不存在唯一的通用法则。不同的类对成员的排序可能是不同的。最重要的一点,每个类应该以某种逻辑去排序它的成员,维护者应该要能解释这种排序逻辑。比如,新的方法不能总是习惯性地添加到类的结尾,因为这样就是按时间顺序而非某种逻辑来排序的。

3.4.3 重载:永不分离

当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。

格式

术语说明:块状结构(block-like construct) 指的是一个类,方法或构造函数的主体。需要注意的是,数组初始化中的初始值可被选择性地视为块状结构(4.8.3.1 节)。

4.1 大括号

4.1.1 使用大括号(即使是可选的)

大括号与if, else, for, do, while 语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。

4.1.2 非空块:K&R 风格

对于非空块和块状结构,大括号遵循Kernighan 和Ritchie 风格(Egyptian brackets): ?左大括号前不换行

?左大括号后换行

?右大括号前换行

?如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。

例如,如果右大括号后面是else 或逗号,则不换行。

示例:

return new MyClass() {

@Override public void method() {

if (condition()) {

try {

something();

} catch (ProblemException e) {

recover();

}

}

}

};

4.8.1 节给出了enum类的一些例外。

4.1.3 空块:可以用简洁版本

一个空的块状结构里什么也不包含,大括号可以简洁地写成{},不需要换行。例外:如果它是一个多块语句的一部分(if/else 或try/catch/finally),即使大括号内没内容,右大括号也要换行。

示例:

void doNothing() {}

if(condition) {

} else {

doSomething();

}

4.2 块缩进:2 个空格

每当开始一个新的块,缩进增加2 个空格,当块结束时,缩进返回先前的缩进级别。缩进级别适用于代码和注释。(见4.1.2 节中的代码示例)

4.3 一行一个语句

每个语句后要换行。

4.4 列限制(行宽):80或100或120

一个项目可以选择一行80 个字符或100 个字符的列限制,除了下述例外,任何一行如果超过这个字符数限制,必须自动换行。

例外:

?不可能满足列限制的行(例如,Javadoc 中的一个长URL,或是一个长的JSNI 方法参考);

?package 和import 语句(见3.2 节和3.3 节);

?注释中那些可能被剪切并粘贴到shell 中的命令行。

4.5 自动换行

术语说明:一般情况下,一行长代码为了避免超出列限制(80 或100 个字符)而被分为多行,我们称之为自动换行(line-wrapping)。

我们并没有全面,确定性的准则来决定在每一种情况下如何自动换行。很多时候,对于同一段代码会有好几种有效的自动换行方式。

Tips: 提取方法或局部变量可以在不换行的情况下解决代码过长的问题(合理缩短命名长度) 4.5.1 从哪里断开

自动换行的基本准则是:更倾向于在更高(更深入)的语法级别处断开。

如果在非赋值运算符处断开,那么在该符号前断开(比如+,它将位于下一行)。注意:这一点与Google 其它语言的编程风格不同(如C++ 和JavaScript)。这条规则也适用于以下“类运算符”符号:点分隔符(.),类型界限中的&(),catch 块中的管道符号(catch (FooException | BarException e)。如果在赋值运算符处断开,通常的做法是在该符号后断开(比如=,它与前面的内容留在同一行)。这条规则也适用于foreach 语句中的分号。方法名或构造函数名与左括号留在同一行。逗号(,)与其前面的内容留在同一行。

4.5.2 自动换行时缩进至少+4 个空格

自动换行时,第一行后的每一行至少比第一行多缩进4 个空格(注意:制表符不用于缩进。见2.3.1 节)。

当存在连续自动换行时,缩进可能会多缩进不只4 个空格(语法元素存在多级时)。一般而言,两个连续行使用相同的缩进当且仅当它们开始于同级语法元素。

第4.6.3 水平对齐一节中指出,不鼓励使用可变数目的空格来对齐前面行的符号。

4.6 空白

4.6.1 垂直空白

以下情况需要使用一个空行:

?类内连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。例外:两个连续字段之间的空行是可选的,用于字段的空行主要用来对字段

进行逻辑分组。

?在函数体内,语句的逻辑分组间使用空行。

?类内的第一个成员前或最后一个成员后的空行是可选的(既不鼓励也不反对这样做,视个人喜好而定)。

?要满足本文档中其他节的空行要求(比如3.3 节:import 语句)

?多个连续的空行是允许的,但没有必要这样做(我们也不鼓励这样做)。

4.6.2 水平空白

除了语言需求和其它规则,并且除了文字,注释和Javadoc 用到单个空格,单个ASCII 空格也出现在以下几个地方:

?分隔任何保留字与紧随其后的左括号(()(如if, for catch 等)。

?分隔任何保留字与其前面的右大括号(})(如else, catch)。

?在任何左大括号前({),两个例外:

1.@SomeAnnotation({a, b})(不使用空格);

2.String[][] x = foo;(中括号间没有空格,见下面的Note)。

?在任何二元或三元运算符的两侧。这也适用于以下“类运算符”符号:

1.类型界限中的& ()。

2.catch 块中的管道符号(catch (FooException | BarException e)。

3.foreach 语句中的分号。

?在, : ;及右括号())后

?如果在一条语句后做注释,则双斜杠(//)两边都要空格。这里可以允许多个空格,但没有必要。

?类型和变量之间:List list。

?数组初始化中,大括号内的空格是可选的,即new int[] {5, 6}和new int[] { 5,

6 }都是可以的。Note:这个规则并不要求或禁止一行的开关或结尾需要额外的空格,只对内

部空格做要求。

4.6.3 水平对齐:不做要求

术语说明:水平对齐指的是通过增加可变数量的空格来使某一行的字符与上一行的相应字符对齐。

这是允许的(而且在不少地方可以看到这样的代码),但Google 编程风格对此不做要求。即使对于已经使用水平对齐的代码,我们也不需要去保持这种风格。

以下示例先展示未对齐的代码,然后是对齐的代码:

private int x; // this is fine

private Color color; // this too

private intx; // permitted, but future edits

private Color color; // may leave it unaligned

Tips:对齐可增加代码可读性,但它为日后的维护带来问题。考虑未来某个时候,我们需要修改一堆对齐的代码中的一行。这可能导致原本很漂亮的对齐代码变得错位。很可能它会提示你调整周围代码的空白来使这一堆代码重新水平对齐(比如程序员想保持这种水平对齐的风格),这就会让你做许多的无用功,增加了reviewer 的工作并且可能导致更多的合并冲突。

4.7 用小括号来限定组:推荐

除非作者和reviewer 都认为去掉小括号也不会使代码被误解,或是去掉小括号能让代码更易于阅读,否则我们不应该去掉小括号。我们没有理由假设读者能记住整个Java 运算符优先级表。

4.8 具体结构

4.8.1 枚举类

枚举常量间用逗号隔开,换行可选。

没有方法和文档的枚举类可写成数组初始化的格式:

private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }

由于枚举类也是一个类,因此所有适用于其它类的格式规则也适用于枚举类。

4.8.2 变量声明

4.8.2.1 每次只声明一个变量

不要使用组合声明,比如int a, b;

4.8.2.2 需要时才声明,并尽快进行初始化

不要在一个代码块的开头把局部变量一次性都声明了(这是c 语言的做法),而是在第一次需要使用它时才声明。局部变量在声明时最好就进行初始化,或者声明后尽快进行初始化。

4.8.3 数组

4.8.3.1 数组初始化:可写成块状结构

数组初始化可以写成块状结构,比如,下面的写法都是OK 的:

new int[] {

0, 1, 2, 3

}

new int[] {

0,

1,

2,

3

}

new int[] {

0, 1,

2, 3

}

new int[]

{0, 1, 2, 3}

4.8.3.2 非C 风格的数组声明

中括号是类型的一部分:String[] args,而非String args[]。

4.8.4 switch语句

术语说明:switch 块的大括号内是一个或多个语句组。每个语句组包含一个或多个switch 标签(case FOO:或default:),后面跟着一条或多条语句。

4.8.4.1 缩进

与其它块状结构一致,switch 块中的内容缩进为2 个空格。

每个switch 标签后新起一行,再缩进2 个空格,写下一条或多条语句。

4.8.4.2 Fall-through:注释

在一个switch 块内,每个语句组要么通过break, continue, return 或抛出异常来终止,要么通过一条注释来说明程序将继续执行到下一个语句组,任何能表达这个意思的注释都是OK 的(典型的是用// fall through)。这个特殊的注释并不需要在最后一个语句组(一般是default )中出现。示例:

switch (input) {

case 1:

case 2:

prepareOneOrTwo();

// fall through

case 3:

handleOneTwoOrThree();

break;

default:

handleLargeNumber(input);

}

4.8.4.3 default 的情况要写出来

每个switch 语句都包含一个default 语句组,即使它什么代码也不包含。

4.8.5 注解(Annotations)

注解紧跟在文档块前面,应用于类、方法和构造函数,一个注解独占一行。这些换行不属于自动换行(第4.5 节,自动换行),因此缩进级别不变。例如:

@Override

@Nullable

public String getNameIfPresent() { ... }

例外:单个的注解可以和签名的第一行出现在同一行。例如:

@Override public inthashCode() { ... }

应用于字段的注解紧随文档块出现,应用于字段的多个注解允许与字段出现在同一行。例如:

@Partial @Mock DataLoader loader;

参数和局部变量注解没有特定规则。

4.8.6 注释

4.8.6.1 块注释风格

块注释与其周围的代码在同一缩进级别。它们可以是/* ... */风格,也可以是// ...风格。对于多行的/* ... */注释,后续行必须从*开始,并且与前一行的*对齐。以下示例注释都是OK 的。

/*

* This is // And so /* Or you can

* okay. // is this. * even do this. */

*/

注释不要封闭在由星号或其它字符绘制的框架里。

Tips:在写多行注释时,如果你希望在必要时能重新换行(即注释像段落风

格一样),那么使用/* ... */。

4.8.7 修饰符

类和成员的修饰符如果存在,则按Java 语言规范中推荐的顺序出现。

public protected private abstract static final transient volatile synchronized native strictfp

命名约定

5.1 对所有标识符都通用的规则

标识符只能使用ASCII 字母和数字,因此每个有效的标识符名称都能匹配正则表达式\w+。

在Google 其它编程语言风格中使用的特殊前缀或后缀,如name_, mName, s_name 和kName,在Java 编程风格中都不再使用。

5.2 标识符类型的规则

5.2.1 包名

包名全部小写,连续的单词只是简单地连接起来,不使用下划线。

5.2.2 类名

类名都以UpperCamelCase 风格编写。

类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。

测试类的命名以它要测试的类的名称开始,以Test 结束。例如,HashTest 或HashIntegrationTest。

5.2.3 方法名

方法名都以lowerCamelCase 风格编写。

方法名通常是动词或动词短语。

下划线可能出现在JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test_,例如testPop_emptyStack。并不存在唯一正确的方式来命名测试方法。

5.2.4 常量名

常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词。那,到底什么算是一个常量?

每个常量都是一个静态final 字段,但不是所有静态final 字段都是常量。在决定一个字段是否是一个常量时,考虑它是否真的感觉像是一个常量。例如,如果任何

一个该实例的观测状态是可变的,则它几乎肯定不会是一个常量。只是永远不打算改变对象一般是不够的,它要真的一直不变才能将它示为常量。

// Constants

static final int NUMBER = 5;

static final ImmutableList NAMES = ImmutableList.of("Ed", "Ann"); static final Joiner COMMA_JOINER = Joiner.on(','); // because Joiner is immutable

static final SomeMutableType[] EMPTY_ARRAY = {};

enumSomeEnum{ ENUM_CONSTANT }

// Not constants

static String nonFinal = "non-final";

final String nonStatic = "non-static";

static final SetmutableCollection = new HashSet();

static final ImmutableSetmutableElements =

ImmutableSet.of(mutable);

static final Logger logger = Logger.getLogger(MyClass.getName());

static final String[] nonEmptyArray = {"these", "can", "change"};

这些名字通常是名词或名词短语。

5.2.5 非常量字段名

非常量字段名以lowerCamelCase 风格编写。

这些名字通常是名词或名词短语。

5.2.6 参数名

参数名以lowerCamelCase 风格编写。

参数应该避免用单个字符命名。

5.2.7 局部变量名

局部变量名以lowerCamelCase 风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写。

虽然缩写更宽松,但还是要避免用单字符进行命名,除了临时变量和循环变量。即使局部变量是final 和不可改变的,也不应该把它示为常量,自然也不能用常量的规则去命名它。

5.2.8 类型变量名

类型变量可用以下两种风格之一进行命名:

o单个的大写字母,后面可以跟一个数字(如:E, T, X, T2)。

o以类命名方式(5.2.2 节),后面加个大写的T (如:RequestT, FooBarT)。

5.3 驼峰式命名法(CamelCase)

驼峰式命名法分大驼峰式命名法(UpperCamelCase) 和小驼峰式命名法(lowerCamelCase)。有时,我们有不只一种合理的方式将一个英语词组转换成驼峰形式,如缩略语或不寻常的结构(例如"IPv6" 或"iOS" )。Google 指定了以下的转换方案。

名字从散文形式(prose form)开始:

把短语转换为纯ASCII 码,并且移除任何单引号。例如:"Müller’s algorithm" 将变成"Muellers algorithm"。

把这个结果切分成单词,在空格或其它标点符号(通常是连字符)处分割开。

推荐:如果某个单词已经有了常用的驼峰表示形式,按它的组成将它分割开(如"AdWords" 将分割成"ad words")。

需要注意的是"iOS" 并不是一个真正的驼峰表示形式,因此该推荐对它并不适用。现在将所有字母都小写(包括缩写),然后将单词的第一个字母大写:

每个单词的第一个字母都大写,来得到大驼峰式命名。

除了第一个单词,每个单词的第一个字母都大写,来得到小驼峰式命名。

最后将所有的单词连接起来得到一个标识符。

示例:

Prose form Correct Incorrect

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

"XML HTTP request" XmlHttpRequestXMLHTTPRequest

"new customer ID" newCustomerIdnewCustomerID

"inner stopwatch" innerStopwatchinnerStopWatch

"supports IPv6 on iOS?" supportsIpv6OnIos supportsIPv6OnIOS

"YouTube importer" YouTubeImporter

YoutubeImporter*

加星号处表示可以,但不推荐。

Note:在英语中,某些带有连字符的单词形式不唯一。例如:"nonempty"

和"non-empty" 都是正确的,因此方法名checkNonempty 和

checkNonEmpty 也都是正确的。

编程实践

6.1 @Override:能用则用

只要是合法的,就把@Override注解给用上。

6.2 捕获的异常:不能忽视

除了下面的例子,对捕获的异常不做响应是极少正确的。(典型的响应方式是打印日志,或者如果它被认为是不可能的,则把它当作一个AssertionError 重新抛出。) 如果它确实是不需要在catch 块中做任何响应,需要做注释加以说明(如下面的例子)。

try {

inti = Integer.parseInt(response);

return handleNumericResponse(i);

} catch (NumberFormatException ok) {

// it's not numeric; that's fine, just continue

}

return handleTextResponse(response);

例外:在测试中,如果一个捕获的异常被命名为expected,则它可以被不加注释地忽略。下面是一种非常常见的情形,用以确保所测试的方法会抛出一个期望中的异常,因此在这里就没有必要加注释。

try {

emptyStack.pop();

fail();

} catch (NoSuchElementException expected) {

}

6.3 静态成员:使用类进行调用

使用类名调用静态的类成员,而不是具体某个对象或表达式。

Foo aFoo = ...;

Foo.aStaticMethod(); // good

aFoo.aStaticMethod(); // bad

somethingThatYieldsAFoo().aStaticMethod(); // very bad

6.4 Finalizers: 禁用

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编程规范试题

姓名: ____________ 工号:_______________ 部门:____________ 成绩: 一. 判断题(共15题,每题2分,直接在括号内打“/或“X”) 1、任何时候都不要使接口可以序列化。x 2、相对独立的程序块之间、变量说明之后必须加空行。V 3、当程序需要释放对象的时候,应该手工调用fin alize 方法以释放对象。x 4、公司的规范要求注释率是20%以上,并且必须有助于对程序的阅读理解。x 5、为了程序更加简洁,我们应该尽量使用下面的方式来赋值: a = b = 1 。x 6、每个类都需要定义构建器。x 7、类名、方法名、属性名的命名,都应该使用意义完整的英文描述。V 8、main() 方法的定义是public static void main(String args[]) 。x 9、常量名应该使用全大写,英文单词之间用下划线或者-分隔开。并且,常量应该使用final static 修饰。x 10、公有方法参数名可以和属性名相同,但局部变量不能和属性名相同。V 11、一两行代码就能完成的功能没有必要编写方法实现。x 12、对于模块间接口方法的参数的合法性检查,调用者和被调用者都应该对参数进行合法性检查。 x 13、运行期异常使用RuntimeException的子类来表示,必须在方法声明上加throws子句。x非运行 期异常是从Exception继承而来的,不用在可能抛出异常的方法声明上加throws子句。x 14、使用Objectstream 的方法后,调用release(),释放对象。X 15、减小单个方法的复杂度,使用的if, while, for, switch 语句要在10个以内。V 二、单项选择题(共23题,每题2分) (c ) 1、排版时,代码缩进应该采用的方式是: (A)Tab缩进 (B)2个空格缩进

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编程规范

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语言编码规范 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.编程规范 (一)命名规范 1.【强制】所有编程相关的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 反例:_name / name_ / $name / name$ 正例:name 2.【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。 反例:XingMing [姓名] /xingBie() [性别] 正例:name[姓名] sex[性别]等国际通用的名称,可视为英文。 3. 【强制】类名使用UpperCamelCase(第一个词的首字母,以及后面每个词的首字母都大写,叫做“大骆驼拼写法”) 风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / DTO / VO / DAO 等。正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

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

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. 如下关于集合类的描述错误的是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项目团队开发规范

项目团队开发规范

修订历史记录

目录 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开发文档

Java 开发规范 1.命名规范 1.包命名规范: 1.业务模块的包命名格式如下: src/业务模块名称 2.Service接口的包命名格式如下: com.greencloud.service 3.Service接口实现类的包命名格式如下:com.greencloud.service.impl 4.Dao 接口的包命名格式如下:com.greencloud.dao 5.Dao 接口的实现类的包命名格式如下:com.greencloud.dao.impl 6.Fa?ade接口的包命名格式如下: com.greencloud.service.facade 7.Fa?ade接口的实现类的包命名格式如下:com.greencloud.service.facade.impl 8.业务域对象的包命名格式如下:com.greencloud.entity 9.异常类的包命名格式如下:com.greencloud.exception 10.枚举类的包命名格式如下:com.greencloud.enum 11.常量类的包命名格式如下:com.greencloud.contant 12.帮助类的包命名格式如下:com.greencloud.util 2.类命名规范: 1.Service接口的命名格式如下: I+表名+service 2.Service接口实现类的命名格式如下: 表名+serviceImpl 3.Dao 接口的命名格式如下:I+表名+dao 4.Dao 接口的实现类的包命名格式如下:表名+daoImpl 5.Fa?ade接口的命名格式如下: I+包名+facadeService 6.Fa?ade接口的实现类的命名格式如下:包名+facadeServiceImpl 7.业务域对象的命名格式如下:表名 8.异常类的命名格式如下:描述异常情况+exception 9.枚举类的命名格式如下:描述枚举情况+enum 10.常量类的命名格式如下: 描述常量情况+contant 11.帮助类的命名格式如下: 描述帮助类型+util 3.方法命名规范: 1.查询单个实体对象的方法命名格式: 1.查询单个的实体对象:load+实体对象名+by+字段名 2.如果类中只存在一个加载实体对象的方法:load+实体对象名 3.如果加载一个实体对象需要多个字段组合查询:load+实体对象名+by+最核 心的查询字段或者load+实体对象名+by+ 核心字段1+And+核心字段2 4.失败抛出flex.messaging.service.ServiceException异常或者它的子类 5.成功返回实体对象 例如:通过code字段查询CodeBase实体对象 public CodeBase loadCodeBaseByCode(String code) throws ServiceException 2.查询多个实体对象的方法命名格式:

(完整版)阿里巴巴编码规范(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编程要求规范精彩试题

JAVA编程规范--试题 姓名:工号:部门:成绩: 一. 判断题(共15题,每题2分,直接在括号内打“√”或“×”) 1、任何时候都不要使接口可以序列化。x 2、相对独立的程序块之间、变量说明之后必须加空行。√ 3、当程序需要释放对象的时候,应该手工调用finalize方法以释放对象。x 4、公司的规范要求注释率是20%以上,并且必须有助于对程序的阅读理解。x 5、为了程序更加简洁,我们应该尽量使用下面的方式来赋值:a = b = 1 。x 6、每个类都需要定义构建器。x 7、类名、方法名、属性名的命名,都应该使用意义完整的英文描述。√ 8、main() 方法的定义是public static void main(String args[])。x 9、常量名应该使用全大写,英文单词之间用下划线或者-分隔开。并且,常量应该使用 final static修饰。x 10、公有方法参数名可以和属性名相同,但局部变量不能和属性名相同。√ 11、一两行代码就能完成的功能没有必要编写方法实现。x 12、对于模块间接口方法的参数的合法性检查,调用者和被调用者都应该对参数进行合 法性检查。x 13、运行期异常使用RuntimeException的子类来表示,必须在方法声明上加throws子句。 x非运行期异常是从Exception继承而来的,不用在可能抛出异常的方法声明上加throws 子句。x 14、使用ObjectStream 的方法后,调用release() ,释放对象。X 15、减小单个方法的复杂度,使用的 if, while, for, switch 语句要在10个以内。√ 二、单项选择题(共23题,每题2分) ( c )1、排版时,代码缩进应该采用的方式是: (A)Tab缩进 (B)2个空格缩进 (C)4个空格缩进 (D)8个空格缩进

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.包的注释内容:本包作用,详细描述本包内容,产品模块名称及版本,公司版本 说明: 一句话描述 详细描述 产品模块
公司版本信息

java开发规范文档

一千零一夜产品部系统开发规范V1.0 一千零一夜途遇科技有限公司 2015-11-03

修改记录 目录 1前言 (4) 2开发管理 (4) 3项目周期 (4) 4命名规范 (5) 4.1项目编号命名规范 (5) 4.2文档命名规范 (5) 4.3路径管理 (5) 4.4jsp/html命名规范 (6) 4.5数据库命名规范 (8) 4.5.1表名规范 (8) 4.5.2字段规范 (8) 5文档规范 (8) 6代码规范 (9) 6.1Java源代码规范 (9) 6.1.1命名 (9) 6.1.2代码格式 (11) 6.1.3注释 (12) 6.1.4其他 (13) 6.2jsp/html代码规范 (13) 6.3数据库开发规范 (15) 6.3.1主键 (15) 6.3.2日期类型 (16) 6.3.3固定字段 (16) 6.3.4取值规范 (16) 6.3.5数据库开发工具 (16)

6.3.6Sql书写规范 (17) 6.4其他规范 (17) 7实战代码规范 (18) 7.1Java源代码规范 (18) 7.1.1java代码命名与格式 (18) 7.2jsp/html代码规范 (26) 8FAQ (29) 8.1Logic类中新增数据方法怎么写 (29) 8.2Logic类中修改数据方法怎么写 (30) 8.3Logic类中删除数据方法怎么写 (31) 8.4怎样创建一个没有底部按钮的窗口 (32) 8.5怎样设置弹出窗口的标题 (32) 8.6怎样重写提交数据的方法 (33) 8.7怎样创建单grid的页面 (33) 8.8怎样多个页签的grid的页面 (34) 8.9怎样创建左边树右边grid的页面 (34) 9代码检查规定 (34) 10附录1:JPA使用指南javax.persistence的注解配置 (34)

(完整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。

相关文档
最新文档