JAVA语言编程格式高级规范_java

作为一位开发人员,都要有严格的代码规范。为此我总结了一些代码规范案例。

目 录

1. 前言

2. 试用范围

3. JAVA命名规范--

3.1 公共约定

3.2 Java文件、包

3.3 类、接口命名规范

3.4 方法命名规范

3.5 常量

3.6 变量和参数

3.7 组件/部件

3.8 集合

3.9 神秘的数

3.10 其他

3.11 Java异常

3.12 数组命名

3.13 数据库表命名规则

3.14 数据库字段命名规则

3.15 JSP文件命名

3.16 Servlet类命名

4. 书写格式规范

4.1 缩进

4.2 空格

4.3 对齐

4.4 空行

4.5 注释

5. 代码文件风格

1. 前言 为确保系统源程序可读性,从而增强系统可维护性,兹制定下述编程规范,以规范系统各部分编程。系统继承的其它资源中的源程序也应按此规范作相应修改。
2. 试用范围 本文档将作为河北邮政应用系统软件(JAVA语言)开发的编程格式规范。在系统的编码、测试及维护过程中,要求严格遵守。
3. JAVA命名规范
3.1 公共约定  命名指系统中对源文件名、方法、目录、包、数据库表名、数据库字段等的命名。 
系统所用的命名都使用英文缩写来表达。 
命名的组成方式为:前缀+{命名词素缩写},前缀表达出命名的用途,如数据库表等。 
命名的前缀由项目组确定。 
除系统公共维护对象外的其他对象,命名全部用小写。一种方式用“_”作连接符,另一种方式是词素的第一个字母大写直接连接在一起。在本规范中,数据库名、数据库字段名采用第一种方式,其余采用第二种方式。 
使用可以准确说明变量/字段/类/接口/包等的完整的英文描述符。例如,采用类似 firstName,listAllUsers 或 CorporateCustomer 这样的名字,严禁使用汉语拼音及不相关单词命名,虽然Java支持Unicode命名,但本规范规定对包、类、接口、方法、变量、字段等不得使用汉字等进行命名 
采用大小写混合,提高名字的可读性。一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。包名全部小写。 
尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等,如实现(implement)可缩写成impl,经理(manager)可缩写成mgr等,具体参看下表,严禁滥用缩写。  避免使用长名字(最好不超过 25 个字母)。

避免使用数字,但可用2代替to,用4代替for等,如:go2Jsp。

3.2 Java文件、包 
文件名当与其类严格相同,所有单词首字母大写。 
包名一般以项目或模块名命名,少用缩写和长名,一律小写。 
基本包:com.czpost,所有包、文件都从属于此包。
包名按如下规则组成: [基本包].[项目名].[模块名].[子模块名]... 如: com.czpost.eims com.hepost.eims.until„ 
不得将类直接定义在基本包下,所有项目中的类、接口等都当定义在各自的项目和模块 包中。

3.3 类、接口命名规范  所有单词首字母大写。使用能确切反应该类、接口含义、功能等的词。一般采用名词。 
接口可带I前缀或able、ible、er等后缀。

3.4 方法命名规范 方法的命名应采用完整的英文描述符,大小写混合使用:所有中间单词的第一个字母大写。法名称的第一个单词常常采用一个有强烈动作色彩的动词。 取值类使用get前缀,设值类使用set前缀,判断类使用is(has)前缀。 例: getName() setSarry() isLogon() 方法参数建议顺序:(被操作者,操作内容,操作标志,其他⋯) 例:public void replace(String sourceStr, String oldStr, String newStr) { ........ }

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

3.6 变量和参数 变量建议采用匈牙利命名法,词素规则见“公共约定” 
整型变量(包括int,short,long):以 n 开头,例如:long nCredNum; 
浮点型变量(包括float,double):以 f 开头,例如:double fTranAmt; 
字符变量:以 c 开头,例如:char cPageFlag; 
日期型变量:以d开头,例如:date dToday;  布尔型变量:以is开头,例如:boolean isFlag; 
字符串变量:以 s 开头,例如:char sPageNo[2+1]; 
全局变量:以g开头结合数据的类型,例如:char gsBankNo[10+1]; 
静态变量:静态变量在文件中同样是全局变量,命名规则同全局变量。 
系统级变量:系统级变量同样是全局变量,以 ‘_'开头结合数据的类型。
例如:char _sBankNo[10+1] 没有‘g'。
临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。

3.7 组件/部件 应采用完整的英文描述符命名组件(接口部件),遵循匈牙利命名法则 如:btnOK,lblName。  按钮变量 btn+Xxxxxxx 例如:btnSave, btn Exit, btnPrint等  题标变量 lbl+Xxxxxxxx 例如:lblName, lblSex等 对象类型 前缀 Canvas cvs CheckBox chk Image img List lst Choice chc Dialog dlg Event evt Frame frm Menu menu Panel pnl TextArea txa TextField txf

3.8 集合 一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。命名应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写,适当使用集合缩写前缀。如: Vector vProducts = new Vector(); //产品向量 Array aryUsers = new Array(); //用户列表

3.9 神秘的数 程序里经常会用到一些量,它是有特定的含义的,把神秘的数定义为一个常量。注意这个常量的命名应该能表达该数的意义,并且应该全部大写,以与对应于变量的标识符区别开来。例如50这个数,可以定义为一个名为NUM_OF_EMPLOYEES的常量来代替。

3.10 其他 命名时应使用复数来表示它们代表多值。如:orderItems。

3.11 Java异常 异常类名由表示该异常类型的单词和Exception组成,如ActionException。
异常实例一般使用e、ex等,在多个异常时使用该异常名或简写加E,Ex等组成,如: SQLEx ActionEx

3.12 数组命名 数组应该总是用下面的方式来命名: byte[] buffer; 而不是 byte buffer[];

3.13 数据库表命名规则  前缀与命名词素间用下划线分隔。  命名由小写字母组成。 
命名词素如果由单一词组成,可用全拼;如果是多词组成,用缩写。缩写间用下划线。 例如:  库表:以‘t_'开头  视图:以‘v_'开头  库表索引:以‘t_'开头, 以‘_idx'结尾  库表唯一索引:以‘t_'开头,以‘_uidx'结尾

3.14 数据库字段命名规则 
命名词素如果由单一词组成,可用全拼;如果是多词组成,用缩写。缩写间用下划线。  命名由小写字母组成。  没有前缀。

3.15 JSP文件命名 采用完整的英文描述说明JSP所完成的功能,尽可能包括一个生动的动词,第一个字母小写,如:viewMessage.jsp、editUser.jsp或者forumChooser.jsp等。

3.16 Servlet类命名 一般对应于所服务的对象加后缀Service来命名,如:UserService,TradeService等。

4. 书写格式规范 严格要求书写格式是为了使程序整齐美观、易于阅读、风格统一,程序员对规范书写的必要性要有明确认识。建议源程序使用eclipse工具开发,格式规范预先在工具中设置。

4.1 缩进 缩进建议以4个空格为单位。预处理语句、全局数据、标题、附加说明、函数说明、标号等均顶格书写。语句块的"{"、"}"配对对齐,并与其前一行对齐,语句块类的语句缩进建议每个"{"、"}"单独占一行,便于匹对。sclipse 中的默认方式是开始的"{"不是单独一行,建议更改成上述格式。

4.2 空格 原则上变量、类、常量数据和函数在其类型,修饰名称之间适当空格并据情况对齐。关键字原则上空一格,如:if ( ... ) 等。运算符的空格规定如下:"::"、"->"、"["、"]"、"++"、"--"、"~"、"!"、"+"、"-"(指正负号)、"&"(引用)等几个运算符两边不加空格(其中单目运算符系指与操作数相连的一边),其它运算符(包括大多数二目运算符和三目运算符"?:"两边均加一空格,在作函数定义时还可据情况多空或不空格来对齐,但在函数实现时可以不用。","运算符只在其后空一格,需对齐时也可不空或多空格。不论是否有括号,对语句行后加的注释应用适当空格与语句隔开并尽可能对齐。个人认为此项可以依照个人习惯决定遵循与否。

4.3 对齐 原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在","处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“{”应与首行对齐。 变量定义最好通过添加空格或TAB键形成对齐,同一类型的变量最好放在一起。如下例所示: int nValue; int nResult; int nLength;

4.4 空行 不得存在无规则的空行,比如说连续十个空行。程序文件结构各部分之间空一行,由于每个函数还要有函数说明注释,故通常只需空一行或不空,但对于没有函数说明的情况至少应再空一行。对自己写的函数,建议也加上“//------”做分隔。函数内部数据与代码之间应空至少一行,代码中适当处应以空行空开,建议在代码中出现变量声明时,在其前空一行。类中四个“p”之间至少空一行,在其中的数据与函数之间也应空行。

4.5 注释 注释是软件可读性的具体体现。程序注释量一般占程序编码量的20%,软件工程要求不少于20%。程序注释不能用抽象的语言,类似于"处理"、"循环"这样的计算机抽象语言,要精确表达出程序的处理说明。避免每行程序都使用注释,可以在一段程序的前面加一段注释,具有明确的处理逻辑。 注释必不可少,但也不应过多,不要被动的为写注释而写注释。以下是四种必要的注释:  标题、附加说明。  函数、类等的说明。对几乎每个函数都应有适当的说明,通常加在函数实现之前,在没 有函数实现部分的情况下则加在函数原型前,其内容主要是函数的功能、目的、算法等说明,参数说明、返回值说明等,必要时还要有一些如特别的软硬件要求等说明。公用函数、公用类的声明必须由注解说明其使用方法和设计思路,当然选择恰当的命名格式能够帮助你把事情解释得更清楚。 
在代码不明晰或不可移植处必须有一定的说明。 
及少量的其它注释,如自定义变量的注释、代码书写时间等。

5. 代码文件风格 所有的 Java(*.java) 文件都必须遵守如下的样式规则: 
文件生成 对于规范的 JAVA 派生类,尽量用 eclipse工具来生成文件格式,避免用手工制作的头文件/实现文件。  package/import package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。
package hotlava.net.stats; import java.io.*; import java.util.Observable; import hotlava.util.Application; 这里 java.io.* 使用来代替InputStream and OutputStream 的。 
文件头部注释 文件头部注释主要是表明该文件的一些信息,是程序的总体说明,可以增强程序的可读性和可维护性。文件头部注释一般位于 package/imports 语句之后,Class 描述之前。要求至少写出文件名、创建者、创建时间和内容描述。其格式应该尽量约束如下: /** *Title: 确定鼠标位置类 * Description: 确定鼠标当前在哪个作业栏位中并返回作业号 * @Copyright: Copyright (c) 2002 * @Company: HIT * @author: rivershan * @version: 1.0 */  Class 接下来的是类的注释,一般是用来解释类的。 /** *A class representing a set of packet and byte counters * It is observable to allow it to be watched, but only * reports changes when the current set is complete */ 接下来是类定义,包含了在不同的行的 extends 和 implements public class CounterSet extends Observable implements Cloneable  Class Fields

接下来是类的成员变量: /** *Packet counters */ protected int[] packets; public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。  存取方法 接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。(个人认为尽量分行写)

/** *Get the counters * @return an array containing the statistical data. This array has been * freshly allocated and can be modified by the caller. */

public int[] getPackets() { 

return copyArray(packets, offset); 

} public int[] getBytes() { 

 return copyArray(bytes, offset); 

} 

public int[] getPackets() { 

 return packets; 

} public void setPackets(int[] packets) { 

this.packets = packets; 

}

其它的方法不要写在一行上  构造函数 接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。 访问类型("public","private" 等.)和任何"static","final"或"synchronized"应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。

public CounterSet(int size) {

this.size = size;

} 

克隆方法 如果这个类是可以被克隆的,那么下一步就是 clone 方法: public Object clone() {

try {

CounterSet obj = (CounterSet)super.clone(); obj.packets = (int[])packets.clone(); obj.size = size; return obj;

} catch(CloneNotSupportedException e) {

throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());

}

} 

类方法 下面开始写类的方法:

/** *Set the packet counters * (such as when restoring from a database) */ protected final void setArray(int[] r1, int[] r2, int[] r3, int[] r4) throws IllegalArgumentException {

// // Ensure the arrays are of equal size // if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length) throw new IllegalArgumentException("Arrays must be of the same size"; System.arraycopy(r1, 0, r3, 0, r1.length); System.arraycopy(r2, 0, r4, 0, r1.length); }  toString 方法 无论如何,每一个类都应该定义 toString 方法:

public String toString() {
String retval = "CounterSet: ";
 for (int i = 0; i < data.length(); i++)  {
 retval += data.bytes.toString();
retval += data.packets.toString();
}
return retval;
 } 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
高级规范
java语言编程规范、高级编程语言培训、c语言高级编程、高级编程语言、c语言编程规范,以便于您获取更多的相关知识。

时间: 2024-09-17 04:36:11

JAVA语言编程格式高级规范_java的相关文章

java编程小说上传-java语言编程小说的上传模块不会做了,请指点

问题描述 java语言编程小说的上传模块不会做了,请指点 用java语言在编程小说的上传功能出现了问题,还请问下一步咋搞? 解决方案 报错的是什么部分错误代码帖出来,上传可以找些io方面的看看 解决方案二: 错误的地方会有信息,可以看看 解决方案三: novel没定义,还是外面定义好了,没传参进来?

Java并发编程之创建线程_java

先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程.下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 一.Java中关于应用程序和进程相关的概念 在Java中,一个应用程序对应着一个JVM实例(也有地方称为JVM进程),一般来说名字默认为java.exe或者javaw.exe(windows下可以通过任务管理器查看).Java采用的是单线程编程模型,即在我们自己的程序中如果没有主动创

java多线程编程实现下雪效果_java

没有直接采用继承Thread类或者继承Runnable的接口来实现多线程,而是使用了匿名内部类. 要导入的类: import javax.swing.*; import java.awt.*; 1.定义SowPanel类,继承JPanel类,这个类有两个整型数组成员,用来保存雪花起始位置.在构造函数中为数组赋初值:重写父类的paint()方法:定义一个启动多线程的startSnow()方法. class SnowPanel extends JPanel { //定义整型数组,存储雪花坐标 pri

Java语言打印九九乘法表_java

这是小时候背的九九乘法表,是中文版,不是数字版,用Java程序打印出来了.  Java源程序如下:   package com.elephant.multiply99table; public class Multiply99table { public static String Convert(int digit) { String[] digitWords = { "十", "一", "二", "三", "四&

JavaSE学习总结(三)——Java语言编程练习、格式化字符与常量

一.变量.常量.字面量 package com.zhangguo.chapter2_3; /** * 1.银行利率为5%,问存款100美元5年的收益细节? * */ public class P1 { public static void main(String[] args) { //变量 int age=100; age=200; //字面量 age=age+99; System.out.println("Hello Boy!"); //常量,不允许修改的量,final(最终的)

详解备忘录模式及其在Java设计模式编程中的实现_java

1. 定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 2. 使用的原因想要恢复对象某时的原有状态. 3. 适用的情况举例有很多备忘录模式的应用,只是我们已经见过,却没细想这是备忘录模式的使用罢了,略略举几例: eg1. 备忘录在jsp+javabean的使用: 在一系统中新增帐户时,在表单中需要填写用户名.密码.联系电话.地址等信息,如果有些字段没有填写或填写错误,当用户点击"提交"按钮时,需要在新增页面上保存

java socket编程实例代码讲解_java

1.所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 操作java socket时用到的最多的三个方法为: accept():主要用于服务器端产生"阻塞",等待客户端的链接请求,并且返回一个客户端的Socket实例: getInputStream():方法主要用来获得网络连接输入,同时返回一个InputStream对象实例: getOutputStream

Java函数式编程(五):闭包_java

使用词法作用域和闭包 很多开发人员都存在这种误解,认为使用lambda表达式会导致代码冗余,降低代码质量.恰恰相反,就算代码变得再复杂,我们也不会为了代码的简洁性而在代码质量上做任何妥协,下面我们就会看到. 在前面一个例子中我们已经可以重用lambda表达式了;然而,如果再匹配另外一个字母,代码冗余的问题很快又卷土重来了.我们先来进一步分析下这个问题,然后再用词法作用域和闭包来把它解决掉. lambda表达式带来的冗余 我们来从friends中过滤出那些以N或者B开头的字母.继续延用上面的那个例

JAVA语言编程中如何使用表达式

JAVA 正则表达式涉及的三个类: String,Pattern,Matcher Pattern是要匹配的模式,Matcher是匹配的结果. 例如:Pattern p = Pattern.complie("[a-z]{3}"); Matcher m = p.mather("abc"); 要想在正则表达式中匹配一个反斜线用四个反斜线表示: "\".matches("\\"); 匹配空白行 " n".match