搜档网
当前位置:搜档网 › 华为JAVA编程规范

华为JAVA编程规范

华为JAVA编程规范
华为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();

}

case x:

{

int i = 9;

}

规则6相对独立的程序块之间、变量说明之后必须加空行。(1.42+)

说明:阅读代码更加清晰

示例:

if(a > b)

{

doStart();

}

//此处是空行

return;

规则7在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如.),后不应加

空格。(1.42+)

说明:阅读代码更加清晰

示例:

if (a == b)

{

objectA.doStart();

}

a *= 2;

1.1.2 建议

建议1类属性和类方法不要交叉放置,不同存取范围的属性或者方法也尽量不要交叉放置。

(1.42+)

格式:

类定义

{

类的公有属性定义

类的保护属性定义

类的私有属性定义

类的公有方法定义

Page 2 , Total 19

类的保护方法定义

类的私有方法定义

}

建议2修饰词按照指定顺序书写:[访问权限][static][final] 。(1.42+)

示例:

public static final String str = “abc”;

1.2 注释

1.2.1 规则

规则1源程序注释量必须在30%以上。(1.42+)

说明:由于每个文件的代码注释不一定都可以达到30%,建议以一个系统内部模块作为单位进行检查

规则2包的注释:写入一个名为package.html的HTML格式的说明文件放入包所在路径。包的注释内容:简述本包的作用、详细描述本包的内容、产品模块名称和版本、公

司版权。(1.42+)

说明:方便JavaDoc收集,方便对包的了解

示例:

com/huawei/iin/websmap/comm/package.html

一句话简述。

详细描述。

产品模块名称和版本


公司版权信息

示例:

为 WEBSMAP 提供通信类,上层业务使用本包的通信类与 SMP-B 进行通信。

详细描述。。。。。。。。

IIN V100R001 WEBSMAP


(C) 版权所有 2000-2001 华为技术有限公司

Page 3 , Total 19

规则3类和接口的注释放在class或者interface 关键字之前,import 关键字之后。注释主要是一句话功能简述与功能详细描述。类注释使用“/** */”注释方式(1.42+)

说明:方便JavaDoc收集,没有import可放在package之后。注释可根据需要列出:作者、内容、功能、与其它类的关系等。功能详细描述部分说明该类或者接口的功能、作用、使用方法和注意事项,每次修改后增加作者和更新版本号和日期,@since 表示从那个版本开始就有这个类或者接口,@deprecated 表示不建议使用该类或者接口。

/**

* 〈一句话功能简述〉

* 〈功能详细描述〉

* @author [作者](必须)

* @see [相关类/方法](可选)

* @since [产品/模块版本] (必须)

* @deprecated (可选)

*/

示例:

package https://www.sodocs.net/doc/0811456480.html,m;

import java.util.*;

/**

* LogManager 类集中控制对日志读写的操作。

* 全部为静态变量和静态方法,对外提供统一接口。分配对应日志类型的读写器,

* 读取或写入符合条件的日志纪录。

* @author 张三,李四,王五

* @see LogIteraotor

* @see BasicLog

* @since CommonLog1.0

*/

public class LogManager

规则4类属性(成员变量)、公有和保护方法注释:写在类属性、公有和保护方法上面,注释方式为“/** */”.(1.42+)

示例:

/**

* 注释内容

*/

private String logType;

/**

* 注释内容

*/

public void write()

Page 4 , Total 19

规则5公有和保护方法注释内容:列出方法的一句话功能简述、功能详细描述、输入参数、

输出参数、返回值、异常等。(1.42+)

格式:

/**

* 〈一句话功能简述〉

* 〈功能详细描述〉

* @param [参数1] [参数1说明]

* @param [参数2] [参数2说明]

* @return [返回类型说明]

* @exception/throws [异常类型] [异常说明]

* @see [类、类#方法、类#成员]

* @since [起始版本]

* @deprecated

*/

说明:@since 表示从那个版本开始就有这个方法,如果是最初版本就存在的方法无需说明;

@exception或throws 列出可能仍出的异常;@deprecated 表示不建议使用该方法。

示例:

/**

* 根据日志类型和时间读取日志。

* 分配对应日志类型的LogReader,指定类型、查询时间段、条件和反复器缓冲数,

* 读取日志记录。查询条件为null或0的表示没有限制,反复器缓冲数为0读不到日志。 * 查询时间为左包含原则,即 [startTime, endTime) 。

* @param logTypeName 日志类型名(在配置文件中定义的)

* @param startTime 查询日志的开始时间

* @param endTime 查询日志的结束时间

* @param logLevel 查询日志的级别

* @param userName 查询该用户的日志

* @param bufferNum 日志反复器缓冲记录数

* @return 结果集,日志反复器

* @since 1.2

*/

public static LogIterator read(String logType, Date startTime, Date endTime, int logLevel, String userName, int bufferNum)

规则6对于方法内部用throw语句抛出的异常,必须在方法的注释中标明,对于所调用的其他

方法所抛出的异常,选择主要的在注释中说明。对于非RuntimeException,即throws

子句声明会抛出的异常,必须在方法的注释中标明。(1.42+)

说明:异常注释用@exception或@throws表示,在JavaDoc中两者等价,但推荐用@exception标注Runtime异常,@throws标注非Runtime异常。异常的注释必须说明该异常的含义及什么条件下抛出该异常。

Page 5 , Total 19

规则7注释应与其描述的代码相近,对代码的注释应放在其上方,并与其上面的代码用空行隔

开,注释与所描述内容进行同样的缩排。(1.42+)

说明:可使程序排版整齐,并方便注释的阅读与理解。

示例:

/*

* 注释

*/

public void example2( )

{

// 注释

CodeBlock One

// 注释

CodeBlock Two

}

/*

* 注释

*/

public void example( )

{

// 注释

CodeBlock One

// 注释

CodeBlock Two

}

规则8对于switch语句下的case语句,必须在每个case分支结束前加上break语句。(1.42+)

说明:break才能真正表示该switch执行结束,不然可能会进入该case以后的分支。至于语法上合法的场景“一个case后进入下一个case处理”,应该在编码设计上就避免。

规则9修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。

(1.42+)

规则10注释的内容要清楚、明了,含义准确,防止注释二义性。(1.42+)

说明:错误的注释不但无益反而有害。

规则11避免在注释中使用缩写,特别是不常用缩写。(1.42+)

说明:在使用缩写时或之前,应对缩写进行必要的说明。

规则12对重载父类的方法必须进行@Override声明(5.0+)

Page 6 , Total 19

说明:可清楚说明此方法是重载父类的方法,保证重载父类的方法时不会因为单词写错而造成错误(写错方法名或者参数个数,类型都会编译无法通过)

示例:

@Override

public void doRequest(SipServletRequest req) throws ServletException, IOException

1.2.2 建议

建议1避免在一行代码或表达式的中间插入注释。(1.42+)

说明:除非必要,不应在代码或表达中间插入注释,否则容易使代码可理解性变差。

建议2在代码的功能、意图层次上进行注释,提供有用、额外的信息。(1.42+)

说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。

示例:如下注释意义不大。

// 如果 receiveFlag 为真

if (receiveFlag)

而如下的注释则给出了额外有用的信息。

// 如果从连结收到消息

if (receiveFlag)

建议3对关键变量的定义和分支语句(条件分支、循环语句等)必须编写注释。(1.42+)

说明:这些语句往往是程序实现某一特定功能的关键,对于维护人员来说,良好的注释帮助更好的理解程序,有时甚至优于看设计文档。

建议4注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。中文注释中需使用中文标点。方法和类描述的

第一句话尽量使用简洁明了的话概括一下功能,然后加以句号。接下来的部分可以详细

描述。(1.42+)

说明:注释语言不统一,影响程序易读性和外观排版,出于对维护人员的考虑,建议使用中文。

JavaDoc工具收集简介的时候使用选取第一句话。

建议5方法内的单行注释使用 //。(1.42+)

说明:调试程序的时候可以方便的使用 /* 。。。*/ 注释掉一长段程序。

建议6一些复杂的代码需要说明。(1.42+)

示例:这里主要是对闰年算法的说明。

//1. 如果能被4整除,是闰年;

//2. 如果能被100整除,不是闰年;

//3. 如果能被400整除,是闰年。

Page 7 , Total 19

建议7使用Html标签使JavaDoc生成更加美观。(1.42+)

示例:

/**

* Returns a hash code for this string. The hash code for a

* String object is computed as

*

* s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

*

* using int arithmetic, where s[i] is the * ith character of the string, n is the length * of

* the string, and ^ indicates exponentiation.

* (The hash value of the empty string is zero.)

*

* @return a hash code value for this object.

*/

public int hashCode()

生成后的

JavaDoc

1.3 命名

1.3.1 规则

规则1类名和接口使用类意义完整的英文描述,每个英文单词的首字母使用大写、其余字母使用小写的大小写混合法。(1.42+)

示例:OrderInformation, CustomerList, LogManager, LogConfig, SmpTransaction

规则2方法名使用类意义完整的英文描述:第一个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法。(1.42+)

示例:

private void calculateRate();

public void addNewOrder();

规则3方法中,存取属性的方法采用setter 和getter方法,动作方法采用动词和动宾结构。

(1.42+)

Page 8 , Total 19

格式:

get + 非布尔属性名()

is + 布尔属性名()

set + 属性名()

动词()

动词+ 宾语()

示例:

public String getType();

public boolean isFinished();

public void setVisible(boolean);

public void show();

public void addKeyListener(Listener);

规则4属性名使用意义完整的英文描述,第一个单词的字母使用小写,剩余单词首字母大写其

余字母小写的大小写混合法。属性名不能与方法名相同。(1.42+)

示例:

private customerName;

private orderNumber;

private smpSession;

规则5常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用static final修饰。(1.42+)

示例:

public static final int MAX_VALUE = 1000;

public static final String DEFAULT_START_DATE = "2001-12-08";

1.3.2 建议

建议1包名采用域后缀倒置的加上自定义的包名,采用小写字母,都应该以com.huawei开头(不包括一些特殊原因)。在部门内部应该规划好包名的范围,防止产生冲突。部门内部产品

使用部门的名称加上模块名称。产品线的产品使用产品的名称加上模块的名称。(1.42+)

说明:除特殊原因包结构都必须以com.huawei开头,如果因为OEM合作等关系,可以不做要求。

格式:

com.huawei.产品名.模块名称

示例:

融合WEBSMAP包名com.huawei.iin.websmap

建议2通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的。(1.42+)

说明:清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释。

建议3常用组件类的命名以组件名加上组件类型名结尾。(1.42+)

Page 9 , Total 19

示例:

Application 类型的,命名以App 结尾——MainApp

Frame 类型的,命名以Frame 结尾——TopoFrame

Panel 类型的,建议命名以Panel 结尾——CreateCircuitPanel

Bean 类型的,建议命名以Bean 结尾——DataAccessBean

EJB 类型的,建议命名以EJB 结尾——DBProxyEJB

Applet 类型的,建议命名以Applet 结尾——PictureShowApplet

建议4如果函数名超过15 个字母,可采用以去掉元音字母的方法或者以行业内约定俗成的缩写方式缩写函数名。(1.42+)

示例:

getCustomerInformation() 改为getCustomerInfo()

建议5准确地确定成员函数的存取控制符号:只是该类内部调用的函数使用private 属性,继承类可以使用的使用protected属性,同包类可以调用的使用默认属性(不加属性控制符号),

对外公开的函数使用public属性(1.42+)

示例:

protected void getUserName()

{

。。。。。。

}

private void calculateRate()

{

。。。。。。

}

建议6含有集合意义的属性命名,尽量包含其复数的意义。(1.42+)

示例:

customers, orderItems

1.4 编码

1.4.1 规则

规则1数据库操作、IO操作等需要使用结束close()的对象必须在try -catch-finally 的finally中close(),如果有多个IO对象需要close(),需要分别对每个对象的close()方法进行try-catch,

防止一个IO对象关闭失败其他IO对象都未关闭。(1.42+)

示例:

try

{

// ... ...

}

catch(IOException ioe)

Page 10 , Total 19

{

//... ...

}

finally

{

try

{

out.close();

}

catch (IOException ioe)

{

//... ...

}

try

{

in.close();

}

catch (IOException ioe)

{

//... ...

}

}

规则2系统非正常运行产生的异常捕获后,如果不对该异常进行处理,则应该记录日志。(1.42+)

说明:此规则指通常的系统非正常运行产生的异常,不包括一些基于异常的设计。若有特殊原因必须用注释加以说明。

示例:

try

{

//.... ...

}

catch (IOException ioe)

{

logger.error(ioe);

}

规则3自己抛出的异常必须要填写详细的描述信息。(1.42+)

说明:便于问题定位。

示例:

throw new IOException("Writing data error! Data: " + data.toString()); 规则4运行时异常使用RuntimeException的子类来表示,不用在可能抛出异常的方法声明上加throws子句。非运行期异常是从Exception继承而来的,必须在方法声明上加throws子句。

(1.42+)

说明:

非运行期异常是由外界运行环境决定异常抛出条件的异常,例如文件操作,可能受权限、磁盘空间大小的影响而失败,这种异常是程序本身无法避免的,需要调用者明确考虑该异常出现时该如

Page 11 , Total 19

何处理方法,因此非运行期异常必须有throws子句标出,不标出或者调用者不捕获该类型异常都会导致编译失败,从而防止程序员本身疏忽。

运行期异常是程序在运行过程中本身考虑不周导致的异常,例如传入错误的参数等。抛出运行期异常的目的是防止异常扩散,导致定位困难。因此在做异常体系设计时要根据错误的性质合理选择自定义异常的继承关系。

还有一种异常是Error 继承而来的,这种异常由虚拟机自己维护,表示发生了致命错误,程序无法继续运行例如内存不足。我们自己的程序不应该捕获这种异常,并且也不应该创建该种类型的异常。

规则5在程序中使用异常处理还是使用错误返回码处理,根据是否有利于程序结构来确定,并且异常和错误码不应该混合使用,推荐使用异常。(1.42+)

说明:

一个系统或者模块应该统一规划异常类型和返回码的含义。

但是不能用异常来做一般流程处理的方式,不要过多地使用异常,异常的处理效率比条件分支低,而且异常的跳转流程难以预测。

注意:Java 5.0 程序内部的错误码可以使用枚举来表示。

规则6注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。(1.42+)

说明:防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。

示例:

下列语句中的表达式

word = (high << 8) | low (1)

if ((a | b) && (a & c)) (2)

if ((a | b) < (c & d)) (3)

如果书写为

high << 8 | low

a |

b && a & c

a |

b <

c & d

(1)(2)虽然不会出错,但语句不易理解;(3)造成了判断条件出错。

规则7避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的静态变量或者枚举来代替。使用异常来表示方法执行错误,而不是使用C++的错误返回码方式。(1.42+)

示例:如下的程序可读性差。

if (state == 0)

{

state = 1;

... // program code

}

应改为如下形式:

private final static int TRUNK_IDLE = 0;

private final static int TRUNK_BUSY = 1;

private final static int TRUNK_UNKNOWN = -1;

if (state == TRUNK_IDLE)

Page 12 , Total 19

{

state = TRUNK_BUSY;

... // program code

}

注意:Java 5.0 下建议使用枚举来表示。

异常:

public void function()

{

...

throw new RuntimeException(“。。。”);

}

规则8数组声明的时候使用int[] index ,而不要使用int index[] 。(1.42+)

说明:使用int index[] 格式使程序的可读性较差,int [] index 表示声明了一个int数组(int [])叫做index

示例:

如下程序可读性差:

public int getIndex()[]

{

....

}

如下程序可读性好:

public int[] getIndex()

{

....

}

规则9不要使用System.out 与System.err 进行控制台打印,应该使用工具类(如:日志工具)进行统一记录或者打印。(1.42+)

说明:代码发布的时候可以统一关闭控制台打印,代码调试的时候又可以打开控制台打印,方便调试。

规则10用调测开关来切换软件的DEBUG版和正式版,而不要同时存在正式版本和DEBUG版本的不同源文件,以减少维护的难度。(1.42+)

规则11集合必须指定模板类型(5.0+)

说明:方便程序阅读,除去强制转换代码

示例:

Map map = new HashMap();

规则12一个文件不要定义两个类(并非指内部类)。(1.42+)

说明:方便程序的阅读与代码的维护

Page 13 , Total 19

规则13所有的数据类必须覆写toString()、hashCode()、equals() 方法,toString()方法返回该类有意义的内容。(1.42+)

说明:方便数据类的比较,父类如果实现了比较合理的toString() ,子类可以继承不必再重写。

hashCode与equals可以使用eclipse自动生成。

示例:

public TopoNode

{

private String nodeName;

public String toString()

{

return "NodeName : " + nodeName;

}

}

规则14判断语句不要使用”* == true”来判断为真

说明:方便阅读,减少没有必要的计算

以下错误:

if (ok == true)

{

……

}

以下正确:

if (ok)

{

……

}

规则15不要写没有必要的向上强制转型。(1.42+)

说明:没必要写的向上强制转型会浪费性能,增加代码阅读难度

示例:

以下错误:

FileInputStream fis = new FileInputStream(f);

InputStream is = (InputStream)fis;

1.4.2 建议

建议1记录异常不要保存exception.getMessage(),而要记录exception.toString(),一般可通过日志工具记录完整的异常堆栈信息。(1.42+)

Page 14 , Total 19

说明:NullPointException抛出时常常描述为空,这样往往看不出是出了什么错。

示例:

try

{

...

}

catch (FileNotFoundException e)

{

logger.error(e);

}

建议2一个方法不应抛出太多类型的异常。(1.42+)

说明:如果程序中需要分类处理,则将异常根据分类组织成继承关系。如果确实有很多异常类型首先考虑用异常描述来区别,throws/exception子句标明的异常最好不要超过三个。

建议3异常捕获尽量不要直接catch (Exception ex),应该把异常细分处理。(1.42+)

说明:可以设计更合理异常处理分支

建议4如果多段代码重复做同一件事情,那么在方法的划分上可能存在问题。(1.42+)

说明:若此段代码各语句之间有实质性关联并且是完成同一件功能的,那么可考虑把此段代码构造成一个新的方法。

建议5集合中的数据如果不使用了应该及时释放,尤其是可重复使用的集合。(1.42+)

说明:由于集合保存了对象的引用,虚拟机的垃圾收集器就不会回收。

建议6源程序中关系较为紧密的代码应尽可能相邻。(1.42+)

说明:便于程序阅读和查找。

示例:矩形的长与宽关系较密切,放在一起。

rect.length = 10;

rect.width = 5;

建议7不要使用难懂的技巧性很高的语句,除非很有必要时。(1.42+)

说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于设计与算法。

建议8明确方法功能,精确(而不是近似)地实现方法设计。一个函数仅完成一件功能,即使简单功能也编写方法实现。(1.42+)

说明:虽然为仅用一两行就可完成的功能去编方法好象没有必要,但用方法可使功能明确化,增加程序可读性,亦可方便维护、测试。

建议9应明确规定对接口方法参数的合法性检查应由方法的调用者负责还是由接口方法本身负责,缺省是由方法调用者负责。(1.42+)

说明:对于模块间接口方法的参数的合法性检查这一问题,往往有两个极端现象,即:要么是调用者和被调用者对参数均不作合法性检查,结果就遗漏了合法性检查这一必要的处理过程,造成问题隐患;要么就是调用者和被调用者均对参数进行合法性检查,这种情况虽不会造成问题,但

Page 15 , Total 19

产生了冗余代码,降低了效率。

建议10尽量使用Java 5.0新循环写法。(5.0+)

说明:代码更加简洁

示例:

ArrayList list = new ArrayList();

list.add...

for(String str:list)

{

System.out.println(str);

}

建议11使用Java 5.0枚举来替代以前用数字与字符串的同等目的的操作。(5.0+)

说明:Java 5.0以前没有枚举,大家都用数字或者字符串做枚举同样功能的事情

示例:

public enum EnumDemo

{

ERROR,INFO,DEBUG

}

In other function:

EnumDemo t = EnumDemo.DEBUG;

if (t == EnumDemo.ERROR)

{

。。。。。。

}

建议12interface 中定义的常量不要写public、static、final的修饰词,方法不要写public修饰词。

(1.42+)

说明:更加简洁

示例:

public interface InterfaceT

{

String TT = "abcl";

void doStart();

}

建议13新起一个线程,都要使用Thread.setName(“…”)设置线程名。

说明:性能测试时可对线程状态进行监控,异常时也可以知道异常发生在哪个线程中

1.5 性能与可靠性

1.5.1 规则

规则1对Debug,Info级别日志输出前必须对当前的调试等级先进行判断。(1.42+)

说明:日志一般都会有不少字符串的处理,如果不是Debug级别就没有必要进行处理

示例:

Page 16 , Total 19

if (logger.debugEnable())

{

logger.debug(“request : ” + request.getMethod());

}

规则2数组复制使用System.arraycopy(*) 。(1.42+)

说明:更好的性能

规则3不要使用循环将集合转为数组,可以使用集合的toArray()方法。(1.42+)

说明:更好的性能,代码更加简洁

示例:

ArrayList list = new ArrayList();

list.add....

String [] array = new String[list.size()];

list.toArray(array);

规则4大量字符串的相加等于处理应该使用StringBuffer。(1.42+)

说明:大量的String相加等于处理性能消耗较多。“大量”一般指5次“+=”以上或者在循环中进行字符串+=操作。

示例:

不推荐:

String str = “”;

str += ”a”;

str += ”b”;

推荐:

StringBuffer sb = new StringBuffer();

sb.append(“aa”);

sb.append(“bb”);

sb.append(“cc”);

规则5对类中日志工具对象logger应声明为static. (1.42+)

说明:防止重复new 出logger对象(logger指各种日志工具类,可以是log4j,common log,jdk logger,内部API等,尽管一些logger对LogFactory工厂有一些优化,但是我们也必须防止代码没有必要的运行)。

Page 17 , Total 19

1.5.2 建议

建议1public类型的底层函数需对输入参数进行判断,参数不合法应该主动抛出RuntimeException。(1.42+)

说明:底层函数必须保证输入参数正确性再进行其他处理(防止后面的代码抛出错误,减少没有必要的后续代码运行)。使用RuntimeException 减少了try catch满天飞,并有利于快速定于异常代码。

示例:

public void doDivide(int a,int b)

{

if (b == 0)

{

throw new IllegalArgumentException(“denominator can’t be

zero”);

}

...

}

建议2尽量使用JDK自带的API函数,不要自己写类似功能的函数. (1.42+)

说明:JDK自身的函数在可靠性,性能方面一般有更好的表现,大家必须熟练掌握,特别是算法方面的。

建议3IO操作流使用有Buffer功能的class. (1.42+)

说明:更好的性能,没有Buffer的输出流频繁IO操作,效率反倒低。

示例:

FileOutputStream file= new FileOutputStream("test.txt");

BufferedOutputStream out = new BufferedOutputStream(file);

for (int i = 0; i < bytes.length; i++ )

{

out.write(…);

}

out.flush();

2 附录

建议在开发工具中使用以下模板:

2.1 Eclipse 华为风格

2.2 Eclipse 注释模板

Page 18 , Total 19

2.3 JBuilder 华为风格(Jbuilder2007以下版本,不包括2007版)

Page 19 , Total 19

华为JAVA编码规范

1.程序块采用缩进风格,空格为4个. 说明: 对于开发工具自动生成的代码可以不一致 2.分界符(如大括号{和})应各自占一行并且在同一列,同时与引用它们的 语句左对齐,在方法的开始,类和接口的定义,以及if,for,do,while,switch,case语句都要采用上述缩进 说明: for(…) { … 说明: if(filename != null && new File(logPath+filename).length() < ()) { 3.…作符) 说明: 采用这种松散方式编写代码目的是让程序更加清晰,由于空格所产生的清晰性是相对的,所以在已经很清晰的语句中没有必要留空格,如果语句已足够清晰,则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为java中括号已经是很清晰的标志了. 在长句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部

中不加空格,给操作符留空格时不要连续留两个以上空格 4.类属性和方法不要交叉放置,不同存取范围的属性和方法也不要交叉放 置 说明: 类定义:{ 类公有属性定义; 类保护属性定义; 类私有属性定义; 类公有方法定义; 类保护方法定义; 类私有方法定义; } 5.源程序的有效注释量必须在30%以上 6.包的注释写入一个名为的html格式的说明文件放入当前路径 7.包的注释内容:本包作用,详细描述本包内容,产品模块名称及版本,公 司版本 说明: 一句话描述 详细描述

产品模块
公司版本信息 8.文件注释:写入文件头部,包名之前 9.文件注释内容:版本说明,描述信息,修改历史,生成日期 说明: /* *文件名 *版权 *描述 *修改人 *修改时间 *修改内容 *跟踪单号 *修改单号 */ 10.类和接口注释:放在package注释之后,class或interface之前 11.类和接口注释内容:类的注释要一句话功能描述,功能详细描述 说明:

华为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.如何处理单元测试产生的数据,下列哪些说法是正确的?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)解析

武汉中软卓越科技有限公司Java语言编码规范

Table of Contents 目录 1. 范围 (3) 2. 术语和定义 (3) 3. 排版规范 (4) 3.1. 规则 (4) 3.2. 建议 (6) 4. 注释规范 (7) 4.1. 规则 (7) 4.2. 建议 (12) 5. 命名规范 (14) 5.1. 规则 (14) 5.2. 建议 (15) 6. 编码规范 (17) 6.1. 规则 (17) 6.2. 建议 (20) 7. JTEST规范 (22) 7.1. 规则 (22) 7.2. 建议 (23)

1.范围 本规范规定了使用Java语言编程时排版、注释、命名、编码和JTest的规则和建议。 本规范适用于使用Java语言编程的案例、产品和项目。 2.术语和定义 规则:编程时强制必须遵守的原则。 建议:编程时必须加以考虑的原则。 格式:对此规范格式的说明。 说明:对此规范或建议进行必要的解释。 示例:对此规范或建议从正、反两个方面给出例子。

3.排版规范 3.1.规则 3.1.1.*程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 3.1.2.*语句块分隔符左括号‘{’应与语句块引用代码在同一行,右括号‘}’应另起一行并 与语句块引用代码左对齐。在函数体的开始、类和接口的定义、以及if、for、do、 while、switch、case语句中的程序都要采用如上的缩进方式。 示例:如下例子不符合规范。 for (...) { ... // program code } if (...) { ... // program code } void example_fun( void ) { ... // program code } 应如下书写: for (...){ ... // program code } if (...){ ... // program code } void example_fun( void ){ ... // program code } 3.1.3.*较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作 符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 示例: if (filename != null && new File(logPath + filename).length() < LogConfig.getFileSize()){ ... // program code } public static LogIterator read(String logType, Date startTime, Date endTime, int logLevel, String userName, int bufferNum) 3.1.4.*不允许把多个短语句写在一行中,即一行只写一条语句

华为JAVA编程规范试题

JAVA编程规范试题 一、判断题(每题2分,共28分) 1、if, for, do, while, case, switch, default 等语句自占一行,且if, for, do, while, switch, case等语句的执行语句无论多少都要加括号{}。 2、包的注释内容要求包括:简述本包的作用、详细描述本包的内容、产品模块 名称和版本、公司版权、生成日期等。 3、类注释部分,描述部分说明该类或者接口的功能、作用、使用方法和注意事 项,每次修改后增加作者、新版本号和当天的日期,@since 表示从那个版本开始就有这个类或者接口,@deprecated 表示不建议使用该类或者接口。4、对于方法内部用throw语句抛出的异常,必须在方法的注释中标明;对于所 调用的其他方法所抛出的异常,在注释中要求说明所有的异常;对于非RuntimeException,即throws子句声明会抛出的异常,必须在方法的注释中标明。 5、类名和接口使用完整的英文单词描述,每个英文单词的首字母使用大写、其 余字母使用小写的大小写混合法。 6、com.huawei.四级部门名称.项目名称,符合包命名规范。 7、不能用异常来做一般流程处理的方式,不要过多地使用异常,异常的处理效 率比条件分支低,而且异常的跳转流程难以预测。 8、划分类的时候,应该尽量把逻辑处理、数据和显示分离,实现类功能的多样 化。 9、一个方法不应抛出太多类型的异常,如果程序中需要分类处理异常,则将异 常根据分类组织成继承关系。 10、switch 语句中的 case 关键字要和后面的常量保持一个空格;如果有特殊 的需要要在switch语句中定义case以外的标签,需要在注释中说明。 11、没有被覆盖的友好方法和没有子类的友好类应该定义成final。 12、简单的类可以通过名字比较两个对象的类,推荐使用 getClass()或者 instanceof()。 13、不要调用 Thread 类的 resume(), suspend(),sleep(), stop() 方法。

Java语言编程规范华为

精心整理DKBA 华为技术有限公司企业技术规范 DKBA1040-2001.12 代替(DKBA200106-003)

目次 前言 (3) 1范围11 2规范性引用文件11 3术语和定义11 4排版规范12 12 5 2.包的注释:包的注释写入一个名为package.html的HTML格式的说明文 件放入当前路径。 16 3.包的注释内容:简述本包的作用、详细描述本包的内容、产 品模块名称和版本、公司版权。 16 4.文件注释:文件注释写入文件头部,包名之前的位置。16 5.文件注释内容:版权说明、描述信息、生成日期、修改历史。17 6.类和接口的注释:该注释放在package关键字之后,class或者interface关键字之前。18

18 7.类和接口的注释内容:类的注释主要是一句话功能简述、功能详 细描述, 8.类属性、公有和保护方法注释:写在类属性、公有和保护方法上面。19 19 9.成员变量注释内容:成员变量的意义、目的、功能,可能被用到的地 方。 19 10.公有和保护方法注释内容:列出方法的一句话功能简述、功能详 细描述、输入参数、输出参数、返回值、违例等。 20 11.对于方法内部用throw语句抛出的异常,必须在方法的注释中 标明,对于所调用的其他方法所抛出的异常,选择主要的在注 释中说明。对于非RuntimeException,即throws子句声明会抛出Array 7.注释尽量使用中文注释和中文标点。方法和类描述的第一句话尽量使 23 用简洁明了的话概括一下功能,然后加以句号。接下来的部分可以详细 描述。 23 8.顺序实现流程的说明使用1、2、3、4在每个实现步骤部分的代 码前面进行注释。 9.一些复杂的代码需要说明。23 6命名规范24 6.1规则24

华为JAVA编程要求规范重要试题

JAVA编程规试题 一、判断题(每题2分,共28分) 1、if, for, do, while, case, switch, default 等语句自占一行,且if, for, do, while, switch, case等语句的执行语句无论多少都要加括号{}。 2、包的注释容要求包括:简述本包的作用、详细描述本包的容、产品模块名称 和版本、公司、生成日期等。 3、类注释部分,描述部分说明该类或者接口的功能、作用、使用方法和注意事 项,每次修改后增加作者、新版本号和当天的日期,since 表示从那个版本开始就有这个类或者接口,deprecated 表示不建议使用该类或者接口。 4、对于方法部用throw语句抛出的异常,必须在方法的注释中标明;对于所调 用的其他方法所抛出的异常,在注释中要求说明所有的异常;对于非RuntimeException,即throws子句声明会抛出的异常,必须在方法的注释中标明。 5、类名和接口使用完整的英文单词描述,每个英文单词的首字母使用大写、其 余字母使用小写的大小写混合法。 6、.huawei.四级部门名称.项目名称,符合包命名规。 7、不能用异常来做一般流程处理的方式,不要过多地使用异常,异常的处理效 率比条件分支低,而且异常的跳转流程难以预测。 8、划分类的时候,应该尽量把逻辑处理、数据和显示分离,实现类功能的多样 化。 9、一个方法不应抛出太多类型的异常,如果程序中需要分类处理异常,则将异 常根据分类组织成继承关系。 10、switch 语句中的 case 关键字要和后面的常量保持一个空格;如果有特殊 的需要要在switch语句中定义case以外的标签,需要在注释中说明。 11、没有被覆盖的友好方法和没有子类的友好类应该定义成final。 12、简单的类可以通过名字比较两个对象的类,推荐使用 getClass()或者 instanceof()。 13、不要调用 Thread 类的 resume(), suspend(),sleep(), stop() 方法。 14、判断方法是否是重载,只关注方法名、参数个数、参数类型,不关注方法返

Java语音编码规范华为

Java语音编码规范(华为) Java语言编码规范 Prepared by 拟制Date 日期 yyyy-mm-dd Reviewed by 评审人Date 日期 yyyy-mm-dd Approved by Date yyyy-mm-dd

Revisi on Record 修订记录

1.范围................................... 2.规范性引用文件............................... 3.术语和定义................................ 4.排版规范.................................. 4.1. 规则................................... 4.2. 建议..... 5. 注释规范 5.1. 规 则........ 5.2. 建议..... 6. 命名规范 6.1. 规 则........ 6.2. 建议..... 7. 编码规范 7.1. 规 则........ 7.2. 建议..... 8. JTEST规 范8.1. 规 则........ 8.2. 建议 ....................................

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

JAVA最全的编码规范

JAVA最全的编码规范 (1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。 Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu 等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。 (2) 为了常规用途而创建一个类时,请采取"经典形式",并包含对下述元素的定义: equals() hashCode() toString() clone()(implement Cloneable) implement Serializable (3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。 (4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。 (5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。 (6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议: 一个复杂的开关语句:考虑采用"多形"机制

Java语音编码规范 华为

Java语音编码规范(华为) 【最新资料,WORD文档,可编辑修改】

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

4.排版规范 4.1.规则 4.1.1.*程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 4.1.2.*分界符(如大括号‘{’和‘}’)应各独占一行并且位于同一列, 同时与引用它们的语句左对齐。在函数体的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 示例:如下例子不符合规范。 for (...) { ... .) { ... . .) { ... .) { ... . ength() < ()) { 4.1.3.... ,后不应加空格。 说明:采用这种松散方式编写代码的目的是使代码更加清晰。 由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在Java语言中括号已经是最清晰的标志了。 在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。 示例: (1)逗号、分号只在后面加空格。 int a, b, c; (2)比较操作符, 赋值操作符"="、"+=",算术操作符"+"、"%",逻辑操作符"&&"、"&",位域

[实用参考]Java编码规范.doc

Java语言编码规范 青岛一图环视信息技术有限公司 Preparedby 拟制魏志宇 Date 日期 2017-09-11 Reviewedby 评审人Date 日期 Approvedby 批准Date 日期

RevisionRecord修订记录

TableofContents目录 1. 范围 (4) 2. 规范性引用文件 (4) 3. 术语和定义 (4) 4. 排版规范 (5) 4.1. 规则 (5) 4.2. 建议 (7) 5. 注释规范 (8) 5.1. 规则 (8) 5.2. 建议 (13) 6. 命名规范 (16) 6.1. 规则 (16) 6.2. 建议 (17) 7. 编码规范 (19) 7.1. 规则 (19) 7.2. 建议 (23) 8. JTEST规范 (25) 8.1. 规则 (25) 8.2. 建议 (26)

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

华为代码规范文档

代码规范文档

目录 1概述 (3) 1.1编写目的 (3) 1.2文档约定 (3) 1.3预期的读者和阅读建议 (3) 1.4参考文献 (3) 2排版要求 (4) 2.1程序块缩进 (4) 2.2程序块之间空行 (4) 2.3长语句和长表达式 (4) 2.4循环、判断等长表达式或语句 (5) 2.5短语句 (6) 2.6条件、循环语句 (6) 2.7语句对齐 (6) 2.8函数、过程和结构等语句块 (7) 2.9程序块分界符 (7) 2.10说明性文件 (8) 2.11源文件头 (8) 2.12变量、常量注释 (9) 2.13数据结构的注释 (9) 2.14全局变量 (10) 2.15其他 (10) 2.16命名规范与系统风格一致 (12) 2.17其他 (12) 3可读性 (14) 3.1运算符优先级 (14) 3.2避免直接使用数字作为标识符 (14) 4函数、过程 (16) 4.1对所调用函数的错误返回码要仔细、全面地处理。 (16) 4.2明确函数功能,精确(而不是近似)地实现函数设计。 (16) 4.3局部变量 (16) 4.4全局变量 (16) 5可测性 (17) 5.1调测开关 (17) 5.2打印信息 (17) 5.3单元测试 (17) 5.4集成测试 (17) 5.5断言使用 (18) 5.6使用宏时,不允许参数发生变化 (20)

1概述 1.1编写目的 为规范软件开发人员的代码编写提供参考依据和统一标准。 1.2文档约定 说明本文档中所用到的专用术语定义或解释,缩略词定义。 1.3预期的读者和阅读建议 本文档适用于所有软件开发人员。 1.4参考文献 列出有关的参考文件,如: a.属于本项目的其他已发表文件; b.本文件中各处引用的文档资料。 列出这些文件的标题、作者,说明能够得到这些文件资料的来源。

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语言编程规范华为年

DKBA 华为技术有限公司企业技术规范 DKBA1040-2001.12 代替(DKBA200106-003)Java语言编程规范 2001-12-XX发布2001-12-XX实施 华为技术有限公司发布

目次 前言 (3) 1 范围11 2 规范性引用文件11 3 术语和定义11 4 排版规范12 4.1 规则12 1.*程序块要采用缩进风格编写,缩进的空格数为4个。12 12 2.*分界符(如大括号‘{’和‘}’)应各独占一行并且位于同 一列,同时与引用它们的语句左对齐。在函数体的开始、类和 接口的定义、以及if、for、do、while、switch、case语句中的程 序都要采用如上的缩进方式。 13 3.*较长的语句、表达式或参数(>80字符)要分成多行书写, 长表达式要在低优先级操作符处划分新行,操作符放在新行之 首,划分出的新行要进行适当的缩进,使排版整齐,语句可 读。

4.*不允许把多个短语句写在一行中,即一行只写一条语句13 5.*if, for, do, while, case, switch, default 等语句自占一行,且if, for, 13 do, while等语句的执行语句无论多少都要加括号{}。 6.*相对独立的程序块之间、变量说明之后必须加空行。13 7.*对齐只使用空格键,不使用TAB键。14 14 8.*在两个以上的关键字、变量、常量进行对等操作时,它们之 间的操作符之前、之后或者前后要加空格;进行非对等操作 时,如果是关系密切的立即操作符(如.),后不应加空格。 4.2 建议15 15 1.类属性和类方法不要交叉放置,不同存取范围的属性或者方 法也尽量不要交叉放置。 5 注释规范16 5.1 规则16 1.一般情况下,源程序有效注释量必须在30%以上。16 16 2.包的注释:包的注释写入一个名为 package.html 的HTML格式 的说明文件放入当前路径。

华为JAVA编码规范

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

Java语言编码规范(Java Code Conventions)

目录 1 介绍(Introduction) (4) 2 文件组织(File Organization) (4) 2.1 Java源文件(Java Source Files) (4) 2.1.1 开头注释(Beginning Comments) (4) 2.1.2 包和引入语句(Package and Import Statements) (5) 2.1.3 类和接口声明(Class and Interface Declarations) (5) 3 缩进排版(Indentation) (6) 3.1 行长度(Line Length) (6) 3.2 换行(Wrapping Lines) (6) 4 注释(Comments) (8) 4.1 实现注释的格式(Implementation Comment Formats) (9) 4.1.1 块注释(Block Comments) (9) 4.1.2 单行注释(Single-Line Comments) (9) 4.1.3 尾端注释(Trailing Comments) (9) 4.1.4 行末注释(End-Of-Line Comments) (10) 4.2 文档注释(Documentation Comments) (10) 5 声明(Declarations) (11) 5.1 每行声明变量的数量(Number Per Line) (11) 5.2 初始化(Initialization) (12) 5.3 布局(Placement) (12) 5.4 类和接口的声明(Class and Interface Declarations) (13) 6 语句(Statements) (14) 6.1 简单语句(Simple Statements) (14) 6.2 复合语句(Compound Statements) (14) 6.3 返回语句(return Statements) (14) 6.4 if-else语句(if-else Statements) (15) 6.5 for语句(for Statements) (15) 6.6 while语句(while Statements) (16) 6.7 do-while语句(do-while Statements) (16) 6.8 switch语句(switch Statements) (16)

相关主题