日企编码规范_第1页
日企编码规范_第2页
日企编码规范_第3页
日企编码规范_第4页
日企编码规范_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java

编码规范

JavaCodingStandard

目录

Java编码规范概要

41代码风格

41.1一般格式说明

41.2基本结构

42代码结构

52.1变更履历

52.2Package声明

72.3Import声明

82.4ClassHeader92.5Class102.6常量(

MenifestVariables)

122.7成员变量(

InstanceVariables)

132.8初始块(

InitializerBlocks)

132.9构造器(

Constructors)

142.10属性(

Properties)

152.11方法(

Methods)

152.12内部类(

InnerClass)

213例子

21编码规范

241命名规范

241.1Package命名规范

241.2Class命名规范

251.3Method命名规范

271.4变量命名规范

292代码风格规范

312.1控制语句风格规范

312.2命令语句风格规范

332.3声明语句风格规范

353书写格式规范

384设计规范

414.1质量测定基准(

Metrics)规范

414.2Class设计规范

414.3Method设计规范

434.4变量设计规范

445Java语言规范

465.1Object整体规范

465.2修饰符规范

485.3Javadoc规范

505.4Import规范

515.5字符串规范

515.6数值规范

535.7日期规范

545.8集合规范

545.9Stream规范

555.10例外规范

565.11线程规范

575.12Servlet规范

595.13EJB规范

61

Java

编码规范概要Java

代码风格概要说明如下。代码风格一般格式说明除字符串和注释内以外,代码中的空格一律为半角。代码中不应有

[TAB]

字符(除字符串内),需要

[TAB]

字符的地方一律替换成

4

个空格。代码中换行和

DOS

系统相同,为

/r/n

。代码应当有缩进,缩进为

4

个空格。缺省的一行代码最大长度为

80

个半角字符,假如超过这个长度就需要换行。一般的情况下,换行后应缩进四格。任何可以省略大括号的地方都不应省略大括号。

基本结构一个类

/

接口的基本结构应当是这样的。以下依次说明。

代码结构

变更履历范例

说明

“文献”的第一行是正文,在它前面没有

NULL

行。当客户规定代码规约的时候,使用上述模版。其中需要修改的部分已经用粗体

标出。在“变更履历”中有一部分是版本编号(

ver

),具体的编号方法依从项目制定的版本变更策略。在“变更履历”的版权信息中,有关于年份的描述。其中“

2023”

是指这个类第一次发行的年份;“

2023”

是指这个类最后一次发行的年份。在“变更履历”的版权信息中,有关于版权所有者的描述。其中的“

NeusoftBusinessSoftware”

,根据不同的项目,可以修改成TOSHIBA

等字样。假如项目中有相关的许可信息(

license

),这些信息可以在“

LINCENSEINFORMATION”

处加入。假如项目中,变更履历使用

CVS

等源码管理系统维护,那么此“变更履历”可以精简为

Package

声明范例

说明

在客户没有明确指定

package

的条件下,

package

遵循以下命名规则:package

名所有为小写字母,中间用“

.”

分割。package

名中严禁使用除小写英语句半角字母以外的任何字符,但是根据需要可以使用下划线“

_”

。例如

标准的

package

名可以分为三部分:

<

公司名

>.<

应用程序名

>.<

包名

>

。其中“公司名”部分可以是“公司名称

+

部门名称”。例如根据需要“公司名”部分也可省略。其中“应用程序名”部分可以是“应用程序名称

+

子程序名称”。例如一般来说,“应用程序名”部分不能省略。其中“包名”部分应当根据程序设计的包结构来定义;“包名”这部分可以根据需要省略。通常,“

Package

声明”部分不能省略。假如是应用程序比较简朴,可以简化

package

的名称。例如,简朴的实验使用的类,可以命名为“

myapp.test”

或者“

test”

;假如是一个小程序,可以命名为“

myapp”

或者“

main”

。规定在每个

package

的目录下(前提是这个

package

中有

class

文献),都必须有一个

package.html

文献。使用这个文献来描述这个

package

的信息。

Import

声明范例

説明“Import

声明”内部没有

NULL

行。“Import

声明”的顺序是java.*->javax.*->

中间件、库等提供的

package->

程序中的

packageImport

需要指出

import

哪一个类,严禁

import

整个

package

。例如通常程序内部用到的

package

都是用

import

语句声明在程序头部;原则上,程序内部不再出现没有

import

声明的类。例如但是会混淆的声明应当在程序中特别指出是那一个

package

中的。例如:程序中用到的类应当在

Import

中声明,但是程序中没有用到的类不要出现在

Import

中。例如

ClassHeader范例

说明

“ClassHeader”

可以分为

3

部分——说明部分、版本信息和其他信息,中间使用

NULL

行分割。程序中的每一个类都必须有

Class

注释。根据需要,

Class

注释中除了说明部分不能省略外,版本信息和其他信息都可以省略。Class

注释中的说明部分的写法参考范例,根据需要,可以省略其中的一些说明部分(可省略的部分后标有可选)。Class

注释的版本信息中,除

@since

可以根据需要省略外,其他的都不可省略。Class

注释的版本信息要上下对齐。@version

信息的结构是“

Ver<

版本

><

日期

><

状态

>”

。其中“版本”是项目版本,具体依据项目制定的版本变更规范;其中“日期”为此文献最后一次修改的日期;其中状态有两种选择“新规做成”和“改订”。@since

信息的结构是“

<

项目名称

>Ver<

版本

>”

。其中“项目名称”可以是项目的全称也可以是项目的简称,但是要注旨在整个项目中这个名称应当不变;其中“版本”是这个类第一次被创建时的项目版本,具体依据项目制定的版本变更规范。Class

注释的其他信息中,

@see

@deprecated

都可以省略。@deprecated

的说明信息的结构是“

<

在哪个版本中不推荐使用

><

使用哪个类替代

>”

。例如根据需要,选择上面两种表述方法中的一种,替换划线部分,做成需要的

@deprecated

信息。

Class范例

说明

ClassBody

应当缩进

4

格。Class

的最后一行规定以“

}///:~”

结尾。这样做有以下好处。标明到了文献最后一行。防止不小心删除最后一个字符(大括号)。有些编辑器可以去除每行后的空格,但是也有也许把这个大括号删除了。以这样结尾,可以防止这一点。Class

声明部分可以分为

4

部分——

Class

前缀、

Class

名、扩展信息和例外信息。Class

声明的结构是“

[public/protected/private][final/abstract/static/strictfp]class/interface<

类名

>[extends…][implements…][throws…]”

。关于

public/protected/private

,在一般情况下(指

Top-LevelClass

),规定所有的类都应当显式声明为

public

。关于

final

,假如项目中没有显式地强调安全性,规定严禁将一个类声明为

final

。关于

abstract

,假如一个类可以声明成

interface

,规定严禁把类声明为

abstract

;假如一个类中没有

abstract

的方法,规定严禁把类声明为

abstract

。不能继承声明为

static

的类。假如项目中不涉及到严格的数据运算(譬如,强调

float

double

的运算),那么严禁把类声明为

strictfp

。Class

的命名遵循以下规则。Class

的名称应当是一个名词短语。可以是“形容词

/

名词

+

名词”的形式。例如

InputDataStream

Developer

、OrderItem

等。Class

的名称由

1

个或

1

个以上的英语句单词组成,其中每一个英语句单词的首字母应当大写,其余字母小写。规定

Class

名称只能由

26

个英文字母组成。Class

命名应当具有一致性。(一致性是指,假如在设计阶段拟定了一个实体,那么和这个实体相关的

Class

应当具有一致的名称。举例来说,“用户”这个实体可以被称作

User

Account

或者

Person

。假如决定使用

User

来表达这个实体的话,则相应的

Class

名应当是

UserFile

UserFileParser

等,避免在系统中出现既有

UserFile

又有

AccountFileParser的情况。)表达复数的

Class

可以命名为“单数

+s”

的形式。例如,

User

Users

Action

Actions

Mapping

Mappings

等。Interface

的名称可以是一个名词或者是一个形容词。例如

IService

IRunnable

。规定

Interface

名称只能由

26

个英文字母组成。Interface

的名称由

1

个或

1

个以上的英语句单词组成,其中每一个英语句单词的首字母应当大写,其余字母小写;规定Interface

的名称前应当有一个“

I”

。实现

Interface

的类一般地应当加上后缀“

Imp”

。例如,接口

IListener

相应

MyListenerImp

。关于

Class

声明部分的缩进,可以在如下形式中选择一种。

常量(

MenifestVariables

)范例

说明

类中常量的声明位于类的最前面,和类的声明之间

NULL

一行。在声明常量的时候给它付值。规定常量应当被修饰为

public

static

final

;一般地,把

public

改成

protected

private

没有特别大的意义。常量的名称使用

26

个英语句大写字母和下划线“

_”

组成。如无设计上的必要,规定把常量写在

class

中代替把常量写在

interface

中。

成员变量(

InstanceVariables

)范例

说明

在声明变量时应当给它付值。却省对象付值为

null

;整型、长型、浮点型等为

0

;布尔型为

false

。一般地,类成员变量声明为

private

。假如需要访问,则提供相应的

getter

setter

方法。原则上不通过

instance._variable

的方式访问。假如设计上无继承扩展的考虑,则不应声明为

protected

。规定类成员变量不声明为

friendly

。类成员变量的名称使用

26

个英文字母并且规定使用下划线“

_”

开头。类成员变量是否为

static

应当在设计时决定。一般地,不要把类成员变量声明为

final

(即,假如声明为

final

,那么必须声明static

,作为常量使用)。

初始块(

InitializerBlocks

)范例

说明

是否使用

staticblock

应当在设计时决定。原则上,在声明类成员变量的时候同时进行初始化。如非必要,不应把声明时的初始化工作在

staticblock

中做。例如

构造器(

Constructors

)范例

说明

缺省的构造器必须显示的声明。如无设计上的规定,构造器一律声明为

public

;对于

SingLETon

模式,构造器可以声明为

private

;在不是必要的条件下,不应把构造器声明为

protected

friendly

。假如缺省构造器中没有任何代码,则应使用“

//null”

标注。

属性(

Properties

)范例

说明

请在类中做

getter

方法、

setter

方法,方法的命名遵循

JavaBean

属性的命名规范。

getter

方法使用“

get+

属性名”;

setter

方法使用“

set+

属性名”;对于返回

boolean

getter

,使用“

is+

属性名”。与属性相应的类成员变量的名字同属性名相同。例如,上例中,属性“

name”

相应的类成员变量是“

_name”

。属性名使用

26

个英文字母组成。属性的

getter

setter

方法应当为

public

方法(

Methods

)范例

说明

方法部分中,每个方法之间有一

NULL

行。一个方法的注释中,包含这个方法的说明、参数说明、返回值说明、例外说明和

@since

(或

@deceprated

)。规定,这几个部分在方法中存在的情况下,必须给出相应的说明。例如,假如方法有返回值,则必须给出

@return

的说明。假如方法的参数和返回值有特殊规定,一定要在注释中写明。例如,关于方法的

@since

@deceprated

参见

ClassHeader

部分。关于参数说明、返回值说明等的对齐,参见

ClassHeader

部分。关于方法声明的缩进,参见

Class

部分。一个方法声明为

public/protected/private

应当在设计时决定。原则上,假如没有声明为

protected

的理由,就声明为

private

;一般来说,不应将方法声明为

friendly

。方法命名应当使用动宾结构。例如“

openAccount()”

、“

save()”

、“

printMailingLabel()”

等。关于方法内部的实现:一个方法只完毕一个特定的功能。(规定是可以用一句话描述这个方法的作用,假如用两句、或两句以上的话才干描述这个方法的作用,说明这个方法过于复杂。)方法内部的写法一般地有两种

相应的代码举例如下

方法内部的解决流程如下

在方法内部的注释要写明

Why

,而不是

What

。例

For

循环使用

i

j

k

作为循环变量。例如:对的使用空格。例如:

调整代码风格。例如

使用

try-catch-finally

结构来

closestream

connection

等需要

close

的对象。这里需要注意的是,在

finallyblock

中把一个

try-catch

写在一行中是只限于这里的特殊写法,在其他地方不允许把两个大括号写在一行。

内部类(

InnerClass

)范例

说明

内部类中的变量定义、函数定义的规定和类中的规定相同。假如没有设计上的规定,一个内部类应当被声明为

private

。假如使用一个内部类表达枚举类型,那么可以将它声明为

static

。一般地,不要把一个内部类声明为

abstract

final

。例子

(继续)(继续)

编码规范

命名规范

Package

命名规范N_PKG001

Package

名要使用小写字说明

·

因素如无特殊规定,请将

Package

名统一成小写字。这是

Java

的一般规则。例

N_PKG002

Package

名要故意义说明

·

因素尽量给

Package

命名一个能联想到

Package

内容的名字。假如使用功能

ID

、流水号等来命名

Package

的话,不能立即明白其意思。遵守此规范,将提高代码的易读性。例

N_PKG003

Package

名是不可省略的说明

·

因素即使

Package

名长,也请尽量不要省略,而使用易懂的名字。例

Class

命名规范N_CLS001

Class

名要能体现其作用说明

·

因素Class

名中,请不要使用功能

ID

、流水号等难懂的名字。

Class

名要使用故意义的字符串,以便能联想到其

Class

的内容。这样将提高代码的易读性。例

N_CLS002

Class

名中单词的第

1

个字母要大写说明

·

因素请大写

Class

名的第

1

个字母。当

Class

名由多个单词组成时,每个单词的第

1

个字母(段落)都要大写。这是

Java

的一般规则。例

N_CLS003

例外

Class

名的最后要加上“

Exception”说明

·

因素对例外

Class

名,请在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论