口语化总结
- 命名使用名词
- 驼峰命名法(Camel-Case): 当变量名或函数名是由一个或多个单字连结在一起,而构成的唯一识别字时,首字母以小写开头,每个单词首字母大写(第一个单词除外)。myFirstName
- 项目名、包名全小写。 com.fxy.dao
- 类名首字母大写。StudentAnswer.java
- 接口类:UserInterface( Dao、Service ).java
接口实现类:UserInterfaceImpl( Dao、Service ).java - 变量名:基本结构为typeVariableName,用3字符前缀来表示数据类型。如:定义一个整形变量:intDocCount
避免用Flag来命名状态变量
用Is来命名逻辑变量。blnFileIsFound - 静态变量(常量):全部大写,多词合成的变量采用“_”来连接各单词。如:USER_LIST
- 方法:首字母以小写开头,每个单词首字母大写(第一个单词除外)。最好是一个动词或者动词词组或者第一个单词为一个动词。getUserName()
- Web层(action、controller)方法:最好是贴近web的语言,如register,login,logout
服务层(service)方法:根据方法的行为命名,只描述方法的意义,而不采用方法的目的命名。
比如系统的添加新用户,用户可以前台注册,也可以管理员后台添加,方法会被重用,所以最好不要用使用register,采用add会更好写。避免使用与web层相关的方法
数据层(dao)方法:只能以insert(插入),delete(删除),update(更新),select(查找),count(统计)开头 - 注释 (Javadoc):/** */
- Jsp页面名称:
- 全部采用小写的英文字符和”_ ”组成
- 整体采用模块名+操作的形式。user_view.jspi
- Jsp页面尽可能与action的意思对应。UserListAction 对应user_list.jsp
阿里官方文档部分总结
一、包名 (Package)
1.1 具有识别度,使用公司名(个人名字)
1.2 全小写。如: com.fxy.dao
二、类名 (Class)
2.1 类的命名(首字母大写,其他小写)如: StudentAnswer.java
2.2 当要区别接口类和实现类的时候,可以在类的后面加上“Impl”。
如:接口类:UserInterface.java
接口实现类:UserInterfaceImpl.java
2.3
1、Dao层
a、接口类:实体对象+Interface+Dao 如:用户对象接口类: UserInterfaceDao,其中xxx为模块名称。
b、实现类:实体对象+Interface+Impl+Dao 如:用户对象实现类:UserInterfaceImplDao
2、Service层
a、接口类:模块+Interface+Service 如:用户管理接口类:UserMsgInterfaceServiec
b、实现类:模块+Interface+Impl+Service 如:用户管理实现类:UserMsgInterfaceImplServiec
3、Web层(action类)
a、实现类:模块+操作+Action 如: 用户模块User+删除操作:Delete+Action = UserDeleteAction
三、变量名(Variable)
(参照java驼峰命名法,首字母以小写开头,每个单词首字母大写(第一个单词除外))
3.1 变量命名采用基本结构为typeVariableName,使用3字符前缀来表示数据类型。
如:定义一个整形变量:intDocCount,其中int表明数据类型,后面为表意的英文名,每个单词首字母大写。
(这里嵌入阿里巴巴的表)
3.2 变量使用技巧:
a、在一段函数中不使用同一个变量表示前后意义不同的两个数值。
b、除非是在循环中,否则一般不推荐使用单个字母作为变量名,i、j、k等只作为小型循环的循环索引变量。
c、避免用Flag来命名状态变量。
d、用Is来命名逻辑变量,如:blnFileIsFound。通过这种给布尔变量肯定形式的命名方式,使得其它开发人员能够更为清楚的理解布尔变量所代表的意义。
e、如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用intCnt,而在另一些区域中又使用intCount,就会给代码增加不必要的复杂性。建议变量名中尽量不要出现缩写。
3.3 静态变量
1、参照java驼峰命名法,采用全部大写的形式来书写,对于采用多词合成的变量采用“_”来连接各单词。如:USER_LIST
3.4 方法的命名
1、参照java驼峰命名法,首字母以小写开头,每个单词首字母大写(第一个单词除外)。
2、方法表示一种行为,它代表一种动作,最好是一个动词或者动词词组或者第一个单词为一个动词。
3、属性方法:以get/set开头,其后跟字段名称,字段名称首字母大写。如:getUserName()
4、数据层方法(dao):只能以insert(插入),delete(删除),update(更新),select(查找),count(统计)开头,其他层方法避免以这个5个单词开头,以免造成误解。
5、服务层方法(service):根据方法的行为命名,只描述方法的意义,而不采用方法的目的命名。比如系统的添加新用户,用户可以前台注册,也可以管理员后台添加,方法会被重用,所以最好不要用使用register,采用add会更好写。避免使用与web层相关的方法。
6、Web层(action、controller)方法:最好是贴近web的语言,如register,login,logout等方法。
四、 注释(Javadoc)
Java除了可以采用我们常见的注释方式(//、/* */)之外,Java语言规范还定义了一种特殊的注释,也就是我们所说的Javadoc注释,以/*开头,而以/结束, Javadoc 注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。 推荐使用。
Javadoc注释主要涉及范围:类、属性、方法。
package org.ietf.jgss;
import java.net.InetAddress;
import java.util.Arrays;
/**
* 该类的整体性描述。
*
* @author 作者
* @version 1.0, 05/22/07
* @since 1.0
*/
public class ChannelBinding {
/**
* 对该变量的备注信息
*/
private InetAddress initiator;
/**
* 对该变量的备注信息
*/
private InetAddress acceptor;
/**
* 对该变量的备注信息
*/
private byte[] appData;
/**
* 对该类的构造函数的备注信息。
*
* @param initAddr 对参数的备注。
* @param acceptAddr 对参数的备注。
* @param appData 对参数的备注。
*/
public ChannelBinding(InetAddress initAddr, InetAddress acceptAddr,byte[] appData) {
initiator = initAddr;
acceptor = acceptAddr;
if (appData != null) {
this.appData = new byte[appData.length];
java.lang.System.arraycopy(appData, 0, this.appData, 0,appData.length);
}
}
/**
* 对该类的具体一函数的备注信息
*
* @param obj 参数的备注信息
* @return 返回值的备注信息
*/
public boolean equals(Object obj) {
if (this == obj)
return true;
if (! (obj instanceof ChannelBinding))
return false;
ChannelBinding cb = (ChannelBinding) obj;
return Arrays.equals(appData, cb.appData);
}
}
五、其他书写规范
5.1 Jsp页面 名称的书写规范
1.全部采用小写的英文字符和”_ ”组成。
2.整体采用模块名+操作的形式。如:user_view.jsp
3.Jsp页面尽可能与action的意思对应,如:UserListAction 对应user_list.jsp
5.2 接口: 使用驼峰式命名。除了用名词外,还可以用形容词命名(体现其功能特性)
5.3 方法: 规定用动词命名,适合用驼峰式命名,但与类名的最大区别在于,首字母必须小写
5.4 变量: 规定为名词,其他同“方法”命名方式一样。变量名非常关键,应含有具体意义且易于理解,一般不允许使用单个字母 做变量名。除非一些临时性变量,像在循环中使用到的计数器等。在使用单个字母做变量名时,一般I、J、K用来命名整形变量。
5.5 常量: 规定全用大写字母表示,如果名字必须用多个单词来表示,那么各单词间用“-“分隔。常量要求必须意义明确,能表达出常量的含义。