版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新生儿科护理工作计划
- 电子计算机公司销售经理述职报告
- (2026版)危急值报告制度考核试题(附答案)
- 2025-2026学年上海市浦东新区进才中学高二(下)期末数学试卷(含解析)
- 进城务工人员随迁子女城市学校适应性与其心理归属感脱节的社会生态学阻念机制与心理干预路径-基于城市边缘社区儿童关爱中心寄宿制儿童心理咨询室个案案例的深入剖析与实证研究
- 2025年皮划艇裁判认证考试题集
- 2025年重庆市潼南区数学中考三模
- 地震类面试题及答案
- 入团团试题库及答案
- 某酿酒厂工艺优化制度
- 风电场道路分包合同
- 模具定期保养维护计划
- 2025-2026学年湖北省武汉市江岸区八年级(下)期中道德与法治试卷(含答案)
- 北京八十中分班测试题
- 六年级语文阅读理解专项训练100篇含答案
- 职业生涯发展展示 (修改)
- 《无人机维护技术》 课件 项目3 维护典型作业无人机
- 湖北小学生诗词大赛备考试题库400题(三四年级适用)
- 普通诊所污水、污物、粪便处理方案 及周边环境情况说明
- 蔡志忠漫画国学系列孙子兵法
- 反比例函数 单元作业设计
评论
0/150
提交评论