JAVA语言编程格式规范

目   录

                    1. 1. 前言
                    2. 2. 试用范围
                    3. 3. JAVA命名规范--
                    4. 3.1 公共约定
                    5. 3.2 Java文件、包
                    6. 3.3 类、接口命名规范
                    7. 3.4 方法命名规范
                    8. 3.5 常量
                    9. 3.6 变量和参数
                    10. 3.7 组件/部件
                    11. 3.8 集合
                    12. 3.9 神秘的数
                    13. 3.10 其他
                    14. 3.11 Java异常
                    15. 3.12 数组命名
                    16. 3.13 数据库表命名规则
                    17. 3.14 数据库字段命名规则
                    18. 3.15 JSP文件命名
                    19. 3.16 Servlet类命名
                    20. 4. 书写格式规范
                    21. 4.1 缩进
                    22. 4.2 空格
                    23. 4.3 对齐
                    24. 4.4 空行
                    25. 4.5 注释
                    26. 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[]) 方法已经定义了, 那么它应该写在类的底部。

时间: 2024-08-08 14:09:22

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

Java语言编程学习之Lambda表达式设计和架构的原则[图]

Java语言编程学习之Lambda表达式设计和架构的原则[图]:大家都知道,Lambda表达式是对Java语言的一点简单改进,在JDK标准类库中,运行它的方式各种各样.但是大多数的Java代码都不是由开发JDK的程序猿写的,而是像我们这样的普通程序猿.很多人都会碰到过这样的情况:你实现了一个新功能或修复了一个缺陷,并且对自己的修改很满意.但其他人看了你的代码后--也许发生在代码审查环节,完全不买账!对于什么是好代码,什么是坏代码,存在分歧很正常!设计模式的改变设计模式是人们熟悉的另一种设计思想,

java语言编程基础

java语言基本要素 高级语言如c++.c#.java等都有一些共同性的东西:关键字.标识符. 运算符.注释.数据类型.常量和变量.语句.函数.数组.高级语言在这些要素上大同小异. Java关键字:一些有特定含义,有专门用途的字符串(keyword).Java中关键字均为小写.如do while if int等.不需要记,用多了自然会知道. 标识符 自定义的名称.如类名.变量名.方法名等.合法标识符规则:1 不可使用关键子字 2 不能以数字开头.在java中标识符可有26个英文大小写字母.数字0

Java语言编程 - Java历史简介

1.1 Sun公司 介绍Java的历史之前,先介绍一下Java语言的缔造公司,Sun公司,Sun公司的全称是:Stanford University Network.值得一提的是,Sun公司从1982年成立到2000年达到顶峰用了近二十年时间,而走下坡路只用了一年,最后2009年4月20日甲骨文以现金收购Sun公司,交易价格达74亿美元. 1.2 计算机语言的发展 计算机语言也是一步步发展起来的,由最初的机器语言,直接用机器能识别0和1写程序,对于人来说很难用这样的语言:之后出现了汇编语言,利用

Java语言编程 - 搭建Java开发环境

2.1 JDK.JRE和JVM关系 要弄清楚JDK.JRE和JVM这三者之间的关系,先看如下图,有个感性的认识: JDK:Java Development ToolKit(Java开发工具包).JDK是整个Java的核心,包括了JRE,一堆Java工具(javac/java/jdb等)和Java基础的类库. JRE:Java  Runtime  Enviromental(Java运行时环境).也就是我们说的Java平台,所有的Java程序都要在JRE下才能运行.包括JVM和Java核心类库和支持

单片机开发之C语言编程基本规范

为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范.本标准规定了程序设计人员进行程序设计时必须遵循的规范.本规范主要针对单片机编程语言和08编译器而言,包括排版.注释.命名.变量使用.代码可测性.程序效率.质量保证等内容. 1.基本规则 格式清晰.注释简明扼要.命名规范易懂.函数模块化.程序易读易维护.功能准确实现.代码空间效率和时间效率高.适度的可扩展性.单片机编程规范-标识符命名 2.标识符命名 2.1 命名基本原则 (1)命名清晰明了,有明确含义,使用完整单词或约定俗

Java SE(三)——java语言编程练习、格式化字符和常量

目录 一.变量.常量.字面量 二.银行利率为5%,问存款100美元5年的收益细节? 三.格式化 3.1.printf格式化输出 3.2.String.format 3.2.1.日期类型 3.2.2.数字类型 四.水仙花数(自幂数) 五.鸡兔同笼 六.素数(质数) 七.分享与下载 一.变量.常量.字面量 package com.zhangguo.chapter2_3; /** * 1.银行利率为5%,问存款100美元5年的收益细节? * */ public class P1 { public st

java语言编程,求两个字符串的最大子串

package stringTest; public class StringDemo4 { public static void main(String[] args) { String str1 = "Ilikejavaverymuch"; String str2 = "java is useful"; StringDemo4 sd4 = new StringDemo4(); sd4.sop(sd4.getMaxSubString1(str1, str2));

java语言编程入门

1 概述 计算机包括硬件和软件两部分.硬件包括计算机中可以看得见的物理部分.而软件提供看不见的指令.这些指令控制硬件并且使得硬件完成特定的任务. 程序设计的定义:创建(或开发软件).软件包括了指令,告诉计算机做什么. 程序设计的应用场景:软件遍布我们周围.除了个人计算机,飞机.汽车.手机甚至烤面包机中,同样运行着软件. 程序设计语言:软件开发人员在程序设计语言的强大工具的帮助下创建软件. 2 计算机硬件介绍 冯诺依曼体系结构是现代计算机的基础,现在大多数计算机依然是冯诺依曼体系结构,只是做了一些

初识Java语言

计算机程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合 Java SE:标配版 a:Java技术的基础和核心 b:主要用于开发桌面应用程序 Java  EE:企业版 a:提供了企业级应用开发的完整解决方案 b:很多的网站都是采用Java EE技术开发 Java ME:微型版 Java  JDK a:JDK(Java  Development  kit),就是Java开发工具包 b: JRE(Java  Runtime  Environment),就是Java运行时环境 c