包名使用域名反转定义,全部使用小写字母.一般的,第三级为所属的项目名称,第四级以及以后为该类或接口所属功能分类
正确样例:
package com.ceshi.xxx;
package com.ceshi.search.service;
2、导入
导入语句不允许使用通配符
正确样例:
import com.ceshi.search.SomeClass;
import com.ceshi.search.SomeInterface;
静态导入需在后面进行说明
importstatic java.sql.Types.VARCHAR;//用于在后续SQL中对应varchar的类型
3、文件注释
文件注释应紧跟导入语句.文件注释推荐为javadoc注释
Javadoc样例:
/**
* 类名、接口名、注释名或者枚举名
* <pre>
* <ol>
* <li>
* 功能点
* </li>
* <li>
* 功能点
* </li>
* </ol>
* </pre>
*
* @version 1.0
* @author <a href="someone@ceshi.com">someone</a>
* @Date some time
* @updated <a href="someone@ceshi.com">someone</a>
*/
非javadoc样例
/*
* 类名、接口名、注释名或者枚举名
* 1.功能点
* 2.功能点
* @version 1.0
* @author <a href="someone@ceshi.com">someone</a>
* @Date some time
* @updated <a href="someone@ceshi.com">someone</a>
*/
4、类名
类名使用通俗易懂的单词描述,可使用拼音,但尽量避免拼音单词同用.类名首字母大写.采用驼峰拼写法
后缀名规范:
后缀 | 用途 | 样例 |
Service | 该类标注为具体业务功能实现类 | PriceReadService ImageService |
Dao | 该类标注为数据操作类 | WriteEntityDao HotWordDao |
Controller | 该类标注为Spring-MVC的控制层 | ImageController FileUploadController |
Impl | 该类标注为对应接口的实现类 | CommonServiceImpl LocalCacheServiceImpl |
5、接口名
接口名使用通俗易懂的单词描述,可使用拼音,但尽量避免拼音单词同用.接口名首字母为大写I.采用驼峰拼写法
后缀名参考类名
正确样例:
IImageService
IPriceReadService
6、枚举名
枚举名使用通俗易懂的单词描述,可使用拼音,但尽量避免拼音单词同用.枚举名首字母为大写E.采用驼峰拼写法
正确样例:
EUserAge
EChinaRegion
7、注释名
注释名使用通俗易懂的单词描述,可使用拼音,但尽量避免拼音单词同用.枚举名首字母为大写.采用驼峰拼写法
正确样例:
ServiceBefor
DaoSetup
8、变量名
变量名使用通俗易懂的单词描述,可使用拼音,但尽量避免拼音单词同用.变量建议在类名之下,第一个方法之前的位置进行声明.最上方为常量,其下为静态变量,类级变量在最下方.
同时,同类变量以作用域顺序进行排列
9、常量名:
常量全部为大写,单词间使用下划线分割
正确样例:
publicfinalstaticintSERVICE_ERROR = 0;
privatefinalstatic String QUERY_USER_BY_ID = "SELECTSOMEONE FROM SOMETABLE WHERE ID= ? ";
10、静态变量
正确样例:
publicstaticlongstartTime = 0L;
privatestatic SimpleDateFormat simpleDateFormat;
11、变量
变量名首写字母为小写.不允许使用下划线等开头命名
正确样例:
private String userName;
privateintage;
private List userAdds;
12、构造函数
如本类有且只有无参构造函数,则根据java规范可忽略.
正确样例:
public Test(){
this(Test.DEFAULT_SOME);
}
public Test(String some){
//somecode
}
13、方法名
方法名使用通俗易懂的单词描述,可使用拼音,但尽量避免拼音单词同用.首字母小写采用驼峰拼写法.方法名建议使用动词.参数列表的命名应遵循
getter和setter方法为特定命名规范.
get+非布尔属性名
is+布尔属性名
set+属性名
14、方法注释
方法注释应在方法名上方.并与上一方法至少相隔一行.建议使用javadoc注释
/**
* 方法名称
* <pre>
* 功能描述
* </pre>
* @param some
* @return Stringsome return
* @Date some time
* @updated <a href="someone@ceshi.com">someone</a>
*/
15、配置文件
配置文件的key使用通俗易懂的单词描述,可使用拼音,但尽量避免拼音单词同用.首写字母小写.采用驼峰拼写法.
同时的,每一个配置项上方应加入注释
正确样例:
#--------------------------------------------------------------------
# Image Configuration
#--------------------------------------------------------------------#允许上传的文件大小(默认值:2M)
fileUpload.maxSize=10485760
# 允许上传的文件类型
fileUpload.filetypes=jpg,jpeg,gif,png
#--------------------------------------------------------------------#文件存储目录配置
#--------------------------------------------------------------------#文件存储根目录(默认:/images)
storage.rootDir=/images
# 每个子目录下的目录个数(默认值:256)
storage.childDir.number=512
# 目录深度(默认值:2)
storage.childDir.depth=5
16、缩进
程序块要采用缩进风格编写,缩进的空格数为4个,不推荐使用Tab缩进
17、分界符
左大括号 { 应紧跟本条语句,同时在代码段结尾换行写入右大括号 },右大括号与起始语句对齐.
正确样例:
for (int i = 0; i < some; i++) {
}
if (condition) {
}
publicvoid someMethod(String... someArray) {
}
18、语句关闭
分号除了在for条件语句之外,一行代码只能出现一次.同时需要杜绝误打多个分号的情况.
正确样例:
if (condition) {
some.code;
}
return some;
19、长语句
较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读.
some.code(other.getSome(), other.getOther(),
other.between(one, tow));
if, for, do,while, case, switch, default 等语句自占一行,且if, for, do, while,switch等语句的执行语句无论多少都要加括号{},case的执行语句中如果定义变量必须加括号{}.
switch (key) {
case value:{
int some=aa;
other.setSome(some);
}
break;
default:
break;
}
20、空行
相对独立的程序块之间、变量说明之后必须加空行.
int index=0;//索引,下标从0开始
此处为空行
some.code(index);
21、对等操作符
在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如.),后不应加空格.
if (a == b) {
some.equals(other);
}
a += USER_COUNT;