JAVA编程规范Word格式.docx

上传人:b****7 文档编号:22121824 上传时间:2023-02-02 格式:DOCX 页数:18 大小:27.83KB
下载 相关 举报
JAVA编程规范Word格式.docx_第1页
第1页 / 共18页
JAVA编程规范Word格式.docx_第2页
第2页 / 共18页
JAVA编程规范Word格式.docx_第3页
第3页 / 共18页
JAVA编程规范Word格式.docx_第4页
第4页 / 共18页
JAVA编程规范Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

JAVA编程规范Word格式.docx

《JAVA编程规范Word格式.docx》由会员分享,可在线阅读,更多相关《JAVA编程规范Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

JAVA编程规范Word格式.docx

4代码文件风格13

4.1文件生成13

4.2程序注释13

4.3配置文件注释15

4.4get\set方法15

4.5构造函数16

4.6类方法17

5表达式和语句18

1概述

为确保系统源程序可读性,从而增强系统可维护性,兹制定下述编程规范,以规范系统各部分编程。

系统继承的其它资源中的源程序也应按此规范作相应修改。

1.1规范制定原则

(1)方便代码的交流和维护。

(2)不影响编码的效率,不与大众习惯冲突。

(3)使代码更美观、阅读更方便。

(4)使代码的逻辑更清晰、更易于理解。

1.2公共约定

(1)除需进行特定的编码集处理,其他使用UTF-8编码集。

(2)命名指系统中对源文件名、方法、目录、包、数据库表名、数据库字段等的命名。

(3)系统所用的命名都使用英文缩写来表达。

(4)命名的组成方式为:

前缀+{命名词素缩写},前缀表达出命名的用途,如数据库表等。

(5)命名的前缀由项目组确定。

(6)除系统公共维护对象外的其他对象,命名全部用小写。

一种方式用“_”作连接符,另一种方式是词素的第一个字母大写直接连接在一起。

在本规范中,数据库名、数据库字段名采用第一种方式,其余采用第二种方式。

(7)使用可以准确说明变量/字段/类/接口/包等的完整的英文描述符。

例如,采用类似firstName,listAllUsers或CorporateCustomer这样的名字,严禁使用汉语拼音及不相关单词命名,虽然JAVA支持Unicode命名,但本规范规定对包、类、接口、方法、变量、字段等不得使用汉字等进行命名。

(8)采用大小写混合,提高名字的可读性。

一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写,包名全部小写。

(9)尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等,如实现(implement)可缩写成impl,经理(manager)可缩写成mgr等,具体参看下表,严禁滥用缩写。

(10)避免使用长名字(最好不超过25个字母)。

(11)避免使用数字,但可用2代替to,用4代替for等。

如:

go2Jsp。

2命名规范

标示符类型

命名约定

例子

全部小写。

标识符用点号分隔开来。

为了使包的名字更易读,Sun公司建议包名中的标识符用点号来分隔。

Sun公司的标准JAVA分配包用标识符.java开头。

全局包的名字用你的机构的Internet保留域名开头。

局部包:

interface.screens

全局包:

com.rational.www.interface.screens

类,接口

类的名字应该使用名词。

每个单词第一个字母应该大写。

避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP。

ClassHello;

ClassHelloWorld;

InterfaceApple;

方法

第一个单词一般是动词。

第一个字母是小些,但是中间单词的第一个字母是大写。

如果方法返回一个成员变量的值,方法名一般为get+成员变量名,如若返回的值是bool变量,一般以is(has)作为前缀。

如果方法修改一个成员变量的值,方法名一般为:

set+成员变量名。

getName();

setName();

isFirst();

变量

第一个字母小写,中间单词的第一个字母大写。

不要用_或&

作为第一个字母。

尽量使用短而且具有意义的单词。

单字符的变量名一般只用于生命期非常短暂的变量。

i,j,k,m,n一般用于integers;

c,d,e一般用于characters。

如果变量是集合,则变量名应用复数。

命名组件采用骆驼命名法,所有前缀均应遵循同一个组件名称缩写列表。

StringmyName;

int[]students;

inti;

intn;

charc;

saveBtn(Btn是Button的缩写)

常量

所有常量名均全部大写,单词间以“_”隔开。

intMAX_NUM;

2.1文件、包命名规范

(1)文件名当与其类严格相同,所有单词首字母大写。

(2)包名一般以项目或模块名命名,少用缩写和长名,一律小写。

(3)基本包:

com,所有包、文件都从属于此包。

(4)包名按如下规则组成:

[基本包].[公司名].[项目名].[模块名].[子模块名]...

com.e-eye.emiv

com.e-eye.emiv.until…

(5)不得将类直接定义在基本包下,所有项目中的类、接口等都当定义在各自的项目和模块包中。

2.2类、接口命名规范

所有单词首字母大写。

使用能确切反应该类、接口含义、功能等的词,一般采用名词。

如使用MVC模式:

(1)Servlet类命名

一般对应于所服务的对象加后缀Service来命名,如:

UserService,TradeService等。

实现类一般对应于所服务的对象加后缀Impl来命名,如UserServiceImpl,TradeServiceImpl等。

(2)JSP\html文件命名

采用完整的英文描述说明JSP所完成的功能,尽可能包括一个生动的动词,第一个字母小写,如:

viewMessage.jsp、editUser.jsp或者forumChooser.html等。

(3)DAO类命名

UserDao,TradeDao等。

实现类一般对应于所服务的对象加后缀Impl来命名,如UserDaoImpl,TradeDaoImpl等。

(4)Controller类命名

一般对应于所服务的对象加后缀Controller来命名,如:

UserController等。

2.3方法命名规范

方法的命名应采用完整的英文描述符,大小写混合使用。

所有中间单词的第一个字母大写。

方法名称的第一个单词常常采用一个有强烈动作色彩的动词。

取值使用get前缀、设值使用set前缀、查询使用query(find)前缀、修改使用upd(update)前缀、删除使用del前缀、判断类使用is(has)前缀。

例:

getName();

setSarry();

isLogon();

queryUser();

updUserById();

方法参数建议顺序:

(被操作者,操作内容,操作标志,其他⋯)。

publicvoidreplace(StringsourceStr,StringoldStr,StringnewStr)

{

........

}

2.4常量、变量、参数命名规则

采用Camel命名法(骆驼命名法),词素规则见“公共约定”。

常量采用完整的英文大写单词,在词与词之间用下划线连接,如:

DEFAULT_VALUE。

临时变量通常被取名为i、j、k,m和n,它们一般用于整型;

c、d、e它们一般用于字符型。

2.5数据库命名规范

(1)表命名

前缀与命名词素间用下划线分隔。

命名由小写字母组成。

命名词素如果由单一词组成,可用全拼;

如果是多词组成,用缩写。

缩写间用下划线。

库表:

以“t_”开头;

视图:

以“v_”开头;

库表索引:

以“t_”开头,以“_idx”结尾;

库表唯一索引:

以“t_”开头,以“_uidx”结尾。

(2)表字段命名

如果是多词组成,用缩写;

没有前缀。

2.6其他

命名时应使用复数来表示它们代表多值。

orderItems

(1)集合

一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。

命名应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写,适当使用集合缩写前缀。

VectorvProducts=newVector();

//产品向量

ArrayaryUsers=newArray();

//用户列表

(2)数组

数组应该总是用下面的方式来命名:

byte[]buffer;

而不是

bytebuffer[];

(3)神秘的数

程序里经常会用到一些量,它是有特定的含义的,把神秘的数定义为一个常量。

注意这个常量的命名应该能表达该数的意义,并且应该全部大写,以与对应于变量的标识符区别开来。

例如50这个数,可以定义为一个名为NUM_OF_EMPLOYEES的常量来代替。

3书写格式

严格要求书写格式是为了使程序整齐美观、易于阅读、风格统一,程序员对规范书写的必要性要有明确认识。

建议源程序使用eclipse\myEclipse工具开发,格式规范使用工具中自带格式化效果(Ctrl+Shift+f)。

3.1缩进

缩进建议以4个空格为单位。

预处理语句、全局数据、标题、附加说明、函数说明、标号等均顶格书写。

语句块的“{”和“}”配对对齐,并与其前一行对齐,语句块类的语句缩进建议每个“{”和“}”单独占一行,便于匹对。

eclipse中的默认方式是开始的“{”不是单独一行,建议更改成上述格式。

在if语句后缩进;

在else语句后缩进;

在switch语句后缩进;

在case语句后缩进;

在do句后缩进;

已经用行接续符分割的语句的各个行要缩进;

对从属于行标注的代码进行缩进。

3.2空格

原则上变量、类、常量数据和函数在其类型,修饰名称之间适当空格并据情况对齐。

关键字原则上空一格,如:

if(...)等。

运算符的空格规定如下:

“:

:

”、“->

”、“[”、“]”、“++”、“--”、“~”、“!

”、“+”、“-”(指正负号)、“&

”(引用)等几个运算符两边不加空格(其中单目运算符系指与操作数相连的一边),其它运算符(包括)大多数二目运算符和三目运算符“?

”和“:

”两边均加一空格,在作函数定义时还可据情况多空或不空格来对齐,但在函数实现时可以不用。

“,”运算符只在其后空一格,需对齐时也可不空或多空格。

不论是否有括号,对语句行后加的注释应用适当空格与语句隔开并尽可能对齐。

个人认为此项可以依照个人习惯决定遵循与否。

3.3对齐

原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。

另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在“,”处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“{”应与首行对齐。

变量定义最好通过添加空格或TAB键形成对齐,同一类型的变量最好放在一起。

如下例所示:

intnValue;

intnResult;

intnLength;

3.4空行

不得存在无规则的空行,比如说连续十个空行。

程序文件结构各部分之间空一行,由于每个函数还要有函数说明注释,故通常只需空一行或不空,但对于没有函数说明的情况至少应再空一行。

对自己写的函数,建议也加上“//------”做分隔。

函数内部数据与代码之间应空至少一行,代码中适当处应以空行空开,建议在代码中出现变量声明时,在其前空一行。

类中四个“p”之间至少空一行,在其中的数据与函数之间也应空行。

3.5注释

注释是软件可读性的具体体现。

程序注释量一般占程序编码量的20%,软件工程要求不少于20%。

程序注释不能用抽象的语言,类似于“处理”、“循环”这样的计算机抽象语言,要精确表达出程序的处理说明。

避免每行程序都使用注释,可以在一段程序的前面加一段注释,具有明确的处理逻辑。

注释必不可少,但也不应过多,不要被动的为写注释而写注释。

以下是必要的注释:

(1)标题、附加说明。

(2)函数、类等的说明。

对几乎每个函数都应有适当的说明,通常加在函数实现之前,在没有函数实现部分的情况下则加在函数原型前,其内容主要是函数的功能、目的、算法等说明,参数说明、返回值说明等,必要时还要有一些如特别的软硬件要求等说明。

公用函数、公用类的声明必须由注解说明其使用方法和设计思路,当然选择恰当的命名格式能够帮助你把事情解释得更清楚。

(3)在代码不明晰或不可移植处必须有一定的说明。

(4)及少量的其它注释,如自定义变量的注释、代码书写时间等。

(5)注释一定出现在要注释的程序段前,不要在某段程序后书写对这段程序的注释,先看到注释对程序的理解会有一定帮助。

如果有可能,请在注释行与上面代码间加一空行。

(6)需要注释的部分:

项目

注释哪些部分

实参/参数

参数类型

参数用来做什么

任何约束或前提条件

示例

字段/属性

字段描述

注释所有使用的不变量

并行事件

可见性决策

类的目的

已知的问题

类的开发/维护历史

注释出采用的不变量

并行策略

编译单元

每一个类/类内定义的接口,含简单的说明

文件名和/或标识信息

版权信息

接口

目的

它应如何被使用以及如何不被使用

局部变量

用处/目的

成员函数注释

成员函数做什么以及它为什么做这个

哪些参数必须传递给一个成员函数

成员函数返回什么

任何由某个成员函数抛出的异常

成员函数是如何改变对象的

包含任何修改代码的历史

如何在适当情况下调用成员函数的例子适用的前提条件和后置条件

成员函数内部注释

控制结构

代码做了些什么以及为什么这样做

难或复杂的代码

处理顺序

4代码文件风格

所有的JAVA(*.java)文件都必须遵守如下的样式规则。

4.1文件生成

对于规范的JAVA派生类,尽量用eclipse\myEclipse工具来生成文件格式,避免用手工制作的头文件/实现文件。

package/import

package行要在import行之前,import中标准的包名要在本地的包名之前,而且按照字母顺序排列。

如果import行中包含了同一个包中的不同子目录,尽量不使用“*”进行处理,减少程序引用的资源。

package.stats;

importjava.util.Observable;

importhotlava.util.Application;

4.2程序注释

文件头部注释主要是表明该文件的一些信息,是程序的总体说明,可以增强程序的可读性和可维护性。

文件头部注释一般位于package/imports语句之后,Class描述之前。

要求至少写出文件名、创建者、创建时间和内容描述。

其格式应该尽量约束如下:

(1)Class(类)

接下来的是类的注释,一般是用来解释类的。

/**

*本类做什么的,处理什么

*@author:

作者

*@version:

版本

*/

publicclassCounterSet{

..........

}

接下来是类定义,尽量包含在同行的extends和implements

publicclassCounterSetextendsObservableimplementsCloneable{

.....................

(2)ClassFields(类中成员)

接下来是类的成员变量:

*该变量做什么用,默认值是什么

protectedint[]packets;

接下来是类的方法:

*本方法做什么用,使用什么场景

*@param参数

*@throws什么时候抛出什么异常

protectedint[]getPackets(){

......

public的成员变量必须生成文档(JAVADoc)。

proceted、private和package定义的成员变量如果名字含义明确的话,可以没有注释。

(3)代码注释

对于逻辑复杂的代码片段,如多重for,多重if等必须要有注释标明。

单行注释:

//判断(处理)什么用的逻辑

If(){

多行注释:

*判断(处理)什么用的逻辑

4.3配置文件注释

配置文件注释对于配置文件中每一个(配置)节点进行解释。

用法:

<

!

--节点做什么用-->

aop:

aspectj-autoproxyproxy-target-class="

true"

/>

4.4get\set方法

类变量的存取的方法,它只是简单的用来将类的变量赋值获取值的话,简单的写在一行上。

publicint[]getPackets()

{

returncopyArray(packets,offset);

publicint[]getBytes()

returncopyArray(bytes,offset);

returnpackets;

publicvoidsetPackets(int[]packets)

this.packets=packets;

4.5构造函数

(1)构造函数,它应该用递增的方式写(比如:

参数多的写在后面)。

访问类型(public、private等)和任何(static、final、synchronized)应该在一行中,遵循JAVA编写习惯。

publicCounterSet(intsize)

this.size=size;

(2)克隆方法

如果这个类是可以被克隆的。

如下clone方法:

PublicObjectclone()

try

{

CounterSetobj=(CounterSet)super.clone();

obj.packets=(int[])packets.clone();

obj.size=size;

returnobj;

catch(CloneNotSupportedExceptione)

thrownewInternalError("

UnexpectedCloneNotSUpportedException:

"

+e.getMessage());

4.6类方法

方法必须明确,处理某一件(类)事情,逻辑处理复杂则进行按逻辑分隔为方法进行处理。

类的方法:

protectedfinalvoidsetArray(int[]r1,int[]r2,int[]r3,int[]r4)

throwsIllegalArgumentException

//

//Ensurethearraysareofequalsize

//

if(r1.length!

=r2.length||r1.length!

=r3.length||r1.length

=r4.length)

thrownewIllegalArgumentException("

Arraysmustbeofthesamesize"

;

System.arraycopy(r1,0,r3,0,r1.length);

System.arraycopy(r2,0,r4,0,r1.length);

(1)toString方法

建议每一个类都应该定义toString方法。

PublicStringtoString()

Stringretval="

CounterSet:

for(inti=0;

i<

data.length();

i++)

retval+=data.bytes.toString();

retval+=data.packets.toString();

}

returnretval;

(2)main方法

如果main(String[])方法已经定义了,那么它应该写在类的底部。

(3)System.out.println()使用

代码中尽量不使用该控制台输出,使用完后必须移除。

5表达式和语句

每行应该只有一条语句。

(1)if-else、if-elseif语句

任何情况下,都应该有“{”和“}”格式如下:

if(condition){

statements;

}elseif(condition){

}else{

(2)for语句格式

如下:

for(initialization;

condition;

update){

如果语句为空:

update);

(3)while语句格式

while(condition){

while(condition);

(4)do-while语句格式

do{

}while(condition);

(5)switch语句

每个switch里都应包含default子语句。

格式如下:

switch(condition){

caseABC:

/*fallsthrough*/

caseDEF:

break;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1