一. 命名风格
-
包名统一使用小写。
正例: 应用工具类包名为 com.alibaba.open.util、 类名为 MessageUtils
-
杜绝完全不规范的缩写,避免望文不知义。
反例: AbstractClass“缩写”命名成 AbsClass、 condition“缩写”命名成 condi、 此类随意 缩写严重降低了代码的可阅读性。
-
类名使用 UpperCamelCase 风格,必须遵从驼峰形式。
正例:MarcoPolo / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / XMLService / TCPUDPDeal / TAPromotion
-
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵 从驼峰形式。
正例: localValue / getHttpMessage() / inputUserId
-
常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例:MAX_STOCK_COUNT 反例:MAX_COUNT
-
抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测 试类命名以它要测试的类的名称开始,以 Test 结尾。
-
为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单 词组合来表达其意。
反例:变量 int a,随意命名方式。
-
对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定 是接口,内部的实现类用 Impl 的后缀与接口区别。
正例:CacheServiceImpl 实现 CacheService 接口。
-
方法命名规约
1) 获取单个对象的方法用 get 做前缀。 2) 获取多个对象的方法用 list 做前缀。 3) 获取统计值的方法用 count 做前缀。 4) 插入的方法用 save/insert 做前缀。 5) 删除的方法用 remove/delete 做前缀。 6) 修改的方法用 update 做前缀。
二.IDEA设置代码注释
-
设置class和interface自动创建注释
Settings->File and Code Templates->Class在#parse下添加: Class: /** * @ClassName: ${NAME} * @Description: TODO * @Author: ${USER} * @Date: ${DATE} ${TIME} * @Version: 1.0 **/ Interface: /** * @Interface: ${NAME} * @Description: TODO * @Author: ${USER} * @Date: ${DATE} ${TIME} * @Version: 1.0 **/
如图:
-
设置方法注释
Settings->Live Templates1).点击右侧加号,选择Template Group 2).命名UserDefined 3).选择UserDefined,点击右侧加号,选择Live Template,命名为:*,上方选择Enter 4).设置Template text: * * TODO * * @author $USER$ * @Date $time$ $date$ $param$ * @return $return$ **/ 5).点击下方警告,选择JAVA。 6).点击Edit variables,如下图
paramDefaultValue
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ((i < params.size() - 1) ? '\\n' : '')}; return result", methodParameters())
如图:
三.缩进
采用 4 个空格缩进或则使用 tab 字符,建议使用 tab。 说明:如果使用 tab 缩进,必须设置 1 个tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时, 请勿勾选 Use tab character。
四.方法内注释
当一个方法内代码里面逻辑复杂,方法内必须写注释。
for(MultipartFile file :files.values()){
String fileName=file.getOriginalFilename(); //文件名
Long fileSize = file.getSize(); //文件大小
//获取后缀
String suffix = fileName.substring(fileName.lastIndexOf("."));
String newFileName = Uuid+suffix;
//创建文件对象
File tagetFile = new File(folderName+newFileName);
if(!tagetFile.exists()){
//文件名不存在 则新建文件,并将文件复制到新建文件中
try {
tagetFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
//获得文件的 MD5 值
String md5Code = DigestUtils.md5Hex(newFileName + fileSize );
//复制文件
file.transferTo(tagetFile);
if(fileName.indexOf(".doc") != -1){
//word 转换成 PDF
WordToPdf.wordConvertToPdf(tagetFile.getPath(), pdfKeepUrl);
}else if(fileName.indexOf(".xls") != -1){
//excl 转换成 PDF
ExclToPdf.exclConvertToPdf(tagetFile.getPath(), pdfKeepUrl);
}
五.IDEA安装插件
1.FindBugs-IDEA
2.Alibaba Java Coding Guidelines
3.pmd