写在最前面java
因为Java面向对象编程的特性, 在命名时应尽可能选择名词。在命名的时候,最经常使用的就是驼峰命名法(Camel-Case): 当变量名或函式名是由一个或多个单字连结在一块儿,而构成的惟一识别字时,首字母以小写开头,每一个单词首字母大写(第一个单词除外)。web
1、包名的书写规范(Package)算法
推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司/机构内所使用的包名的惟一性。包名所有为小写字母,且具备实际的区分意义。数据库
1.1 通常要求编程
一、选择有意义的名字,能快速地传达该类的用途。数组
二、全部包的命名必须采用小写英文字母。jsp
1.2 实际应用函数
应用系统中常常应用分层,Dao层(数据库访问)、Service层(业务处理)、Web层(页面控制action类)。网站
一、包名的前几个为固定名称, 若是是网站的话,采用网站的域名的反写,若是域名尚未肯定的话,采用公司固定的几个名称。如:net.vschoolspa
二、在包名的接下来一个单词为模块的名称。如:用户模块,包名为net.vschool.user
三、关于模块的访问操做,采用分层形式,通常分为:
Dao层操做:通常定义在net.vschool.xxx.dao中,其中xxx为模块名称。
Service层操做:通常定义在net.vschool.xxx.servie中。
web层操做:通常定义在net.vschool.xxx.action中。
1.3 以下关于用户模块的例子:
net.vschool.user
net.vschool.user.dao
net.vschool.user.action
net.vschool.user.service
2、类名的书写规范 (Class)
类名必须使用名词,若是一个类名内含多个单词,那么各个单词第一个字母大写,后续字母小写,起伏呈驼峰状,人称驼峰式命名。给类名命名时,必须保证准确、简洁且容易理解。尽可能使用完整单词,避免使用缩写词(除了你们公认的)
2.1 通常要求
一、选择有意义的名字,能快速地传达该类的用途。
二、参照java驼峰命名法,类名的首字母必须采用大写的形式,若是类名为多词组合而成的话,那么每一个词的首字母必须采用大写。如:StudentAnswer.java
三、当要区别接口类和实现类的时候,能够在类的后面加上“Impl”。 如:接口类:UserInterface.java 接口实现类:UserInterfaceImpl
四、推荐实体类没有后缀名。
2.2 实际应用
应用系统中常常应用分层,Dao层(数据库访问)、Service层(业务处理)、Web层(页面控制action类),每一层的类的名称尽可能带上该层后缀。
一、Dao层
a、接口类:采用JavaBean+Interface+Dao的形式来定义,即,实体对象+Interface+Dao。 如:用户对象接口类:UserInterfaceDao,其中xxx为模块名称。
b、实现类:采用JavaBean+Interface+Impl+Dao的形式来定义,即,实体对象 +Interface+Impl+Dao。如:用户对象实现类:UserInterfaceImplDao
二、Service层
a、接口类:采用Xxx+Interface+Service的形式来定义,即,模块+Interface+Service。 如:用户管理接口类:UserMsgInterfaceServiec
b、实现类:采用Xxx+Interface+Impl+Service的形式来定义,即,模块+Interface+Impl+Service。如:用户管理实现类:UserMsgInterfaceImplServiec
三、Web层(action类)
a、实现类:采用县Xxx+Operator+Action的形式来定义,即,模块+操做+Action。如:用户模块User+删除操做Delete+Action = UserDeleteAction
3、方法的命名
3.1 通常要求
一、选择有意义的名字,能快速地传达该方法的用途。
二、参照java驼峰命名法,首字母以小写开头,每一个单词首字母大写(第一个单词除外)。
3.2 实际应用
一、方法表示一种行为,它表明一种动做,最好是一个动词或者动词词组或者第一个单词为一个动词。
二、属性方法:以get/set开头,其后跟字段名称,字段名称首字母大写。如:getUserName()
三、数据层方法:只能以insert(插入),delete(删除),update(更新),select(查找),count(统计)开头,其余层方法避免以这个5个单词开头,以避免形成误解。
四、服务层方法,根据方法的行为命名,只描述方法的意义,而不采用方法的目的命名。好比系统的添加新用户,用户能够前台注册,也能够管理员后台添加,方法会被重用,因此最好不要用使用register,采用add会更好写。避免使用与web层相关的方法。
五、Web层方法最好是贴近web的语言,如register,login,logout等方法。
4、变量的命名
4.1 普通变量
4.1.1 通常要求
一、选择有意义的名字,能快速地传达该变量的用途。
二、参照java驼峰命名法,首字母以小写开头,每一个单词首字母大写(第一个单词除外)。
4.1.2 实际应用
一、变量命名采用基本结构为typeVariableName,使用3字符前缀来表示数据类型。
数据类型或对象类型 |
变量前缀 |
备注 |
byte |
bye |
一、作数组用时,再加前缀-a,如字符串数组:astr, 二、自定义类型的变量能够采用自己的名称,把首字母改成小写。 三、采用名称要能表明在方法中的意义。若是员工列表:employeeList |
char |
chr |
|
float |
flt |
|
boolean |
bln |
|
Integer/int |
int |
|
short |
sht |
|
Long/long |
lng |
|
Double/double |
dbl |
|
string |
str |
例如,定义一个整形变量:intDocCount,其中int代表数据类型,后面为表意的英文名,每一个单词首字母大写。
二、变量使用技巧:
a、在一段函数中不使用同一个变量表示先后意义不一样的两个数值。
b、除非是在循环中,不然通常不推荐使用单个字母做为变量名,i、j、k等只做为小型循环的循环索引变量。
c、避免用Flag来命名状态变量。
d、用Is来命名逻辑变量,如:blnFileIsFound。经过这种给布尔变量确定形式的命名方式,使得其它开发人员可以更为清楚的理解布尔变量所表明的意义。
e、若是须要对变量名进行缩写时,必定要注意整个代码中缩写规则的一致性。例如,若是在代码的某些区域中使用intCnt,而在另外一些区域中又使用intCount,就会给代码增长没必要要的复杂性。建议变量名中尽可能不要出现缩写。
4.2 静态变量
一、选择有意义的名字,能快速地传达该变量的用途。
二、参照java驼峰命名法,采用所有大写的形式来书写,对于采用多词合成的变量采用“_”来链接各单词。如:USER_SIZE
5、Jsp页面名称的书写规范
1. 所有采用小写的英文字符和”_ ”组成。
2. 总体采用模块名+操做的形式。如:user_view.jsp
3. Jsp页面尽量与action的意思对应,如UserListAction对应者user_list.jsp
6、注释的书写规范(Javadoc)
原则:一、注释形式统一在整个应用程序中,使用具备一致的标点和结构的样式来构造注释。二、注释内容准确简洁内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。
一、基本注释(必须加)(a) 类(接口)的注释(b) 构造函数的注释(c) 方法的注释(d) 全局变量的注释(e) 字段/属性的注释 备注:简单的代码作简单注释,注释内容不大于10个字便可,另外,持久化对象或VO对象的getter、setter方法不需加注释。
二、特殊必加注释(必须加)(a) 典型算法必须有注释。(b) 在代码不明晰处必须有注释。(c) 在代码修改处加上修改标识的注释。(d) 在循环和逻辑分支组成的代码中加注释。(e) 为他人提供的接口必须加详细注释。
注释格式:
一、单行(single-line)注释:“//……”
二、块(block)注释:“/*……*/”
三、文档注释:“/**……*/”
四、javadoc注释标签语法
@author 对类的说明标明开发该类模块的做者
@version 对类的说明标明该类模块的版本
@see 对类、属性、方法的说明参考转向,也就是相关主题
@param 对方法的说明对方法中某参数的说明
@return 对方法的说明对方法返回值的说明
@exception 对方法的说明对方法可能抛出的异常进行说明。
方法注释:
例如:
public class Test extends Button { /** * 为按钮添加颜色 * @param color 按钮的颜色 * @return * @exception (方法有异常的话加) * @author Administrator * @Time 2016-11-20 15:02:29 */ public voidaddColor(String color){ …… } }
全局变量注释:(参考String的注释方式)
例如:
public final class String implements Java.io.Serializable, Comparable<String>,CharSequence { /** The value is used for characterstorage. */ private final char value[]; /** The offset is the first index of thestorage that is used. */ private final int offset; /** The count is the number of charactersin the String. */ private final int count; /** Cache the hash code for the string */ private int hash; // Default to 0…… }
字段/属性注释:
例如:
public class EmailBody implements Serializable{ private String id; private String senderName;//发送人姓名 private String title;//不能超过120个中文字符 private String content;//邮件正文 private String attach;//附件,若是有的话 private String totalCount;//总发送人数 private String successCount;//成功发送的人数 private Integer isDelete;//0不删除 1删除 private Date createTime;//目前不支持定时因此建立后即刻发送 privateSet<EmailList>EmailList; …… }