- 命名规范
-
类和接口命名:每个单词首字母大写,单词之间直接挨在一起(Service,DAO及API类的接口类不使用以“I”开头的命名形式,采用类似接口类名“userService”)
示例:public class DeviceInfo; -
方法与变量命名:首单词首字母小写,后面的单词首字母大写,单词不可随意缩写
示例:public String getName();
private String deviceName = null; -
常量命名:所有单词大写,单词之间通过_连接
示例:public static final int MAX_VALUE = 1000; -
测试命名:单元测试类名:命名格式为“原类名Test”,如对于UserController,测试类命名为:
UserControllerTest
单元测试方法名:命名格式为“test原方法名”,如对于login()方法,测试方法命名为:
testLogin()
单元测试包名:和原包名一致,如对于原包为com.xxx.eccloud,测试类包名为:
com.xxx.eccloud
-
缩进排版
4个空格为一个缩进单位,不要使用Tab进行缩进(除非自己设置过);
行长度不可超过120个字符,超过需换行;在合适的位置换 -
注释
注释标记“//”能够注释一行,//后面必须留有一个空格;禁止使用行尾注释
多行注释第一行(/**)不需缩进,其后文档注释每一行都缩进1格。
源程序注释量必须在20%以上; -
声明
(1)尽量在声明处直接完成初始化,即赋一个默认值;
(2)不要在内部块中声明一个与外部块某个变量同名的变量;
(3)各个方法之间要用一个空行隔开;
(4)方法名和参数列表的圆括号以及括号后的第一个参数间都没有空格。 -
语句
每行最多一个语句;
不要使用import java.util.*这样的引入方式;
组合语句的层次不要太深,嵌套的遍历不要超过三层,否则应对逻辑进行拆分和封装。 -
空白使用
空行:
(1)两个方法之间需使用;
(2)包的声明、引入之间;
(3)变量声明与方法之间;
(4)单行注释或语句块之前。
空格:
(1)控制语句关键词之后;
(2)语句块开始之前:类定义的类名之后的第一个大括号之前,方法定义的方法名之后的第一个大括号
(3)之前,static块的static之后的第一个大括号之前;
(4)for语句的三个元素的两个分号之后,使用空格;
(5)方法的数组参数的省略号之后,使用空格;
(6)二元运算符应该用空格和操作数分开(除.)。
小总结:左大括号前一般要空格,圆括号不用。
- 其他
序列化:实现了java.io.Serializable接口的类中,必须显式的指定序列化ID
引入第三方库规范:(1)使用maven来自动安装库依赖,这种方式虽然简单,但要求我们自己额外去检查依赖库冲突情况;(2)不要引入多余的库
使用toUpperCase和toLowerCase时会用系统语言进行大小写转换,方法中加入参数“Locale.ROOT”,可以使转换与系统语言无关 - 日志
日志级别:error > warn >info > debug > trace
日志输出规范:
(1)一个对象中通常只使用一个Logger对象,Logger应该是static final的;(生成logger对象涉及到java.util.logging.LogManager类,LogManager中用到了单例模式)
(2)不允许抛出异常的同时打印堆栈,因为这样会多次打印堆栈,只允许打印一次堆栈;
(3)不允许出现System print(包括System.out.println和System.error.println)语句;
(4)不允许出现printStackTrace。
(5)使用“{}”占位符,避免不必要的字符串拼接,提升性能(%s也可以作为占位符)