Java代码规范
命名
-
类名使用 UpperCamelCase 风格,遵循大驼峰风格。
正例:MarcoPolo / UserDO / XmlService / -
常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例:MAX_STOCK_COUNT -
抽象类命名使用 Abstract 或 Base 开头;
-
异常类命名使用 Exception 结尾;
-
测试类命名以它要测试的类名开始,以 Test 结尾。
-
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。
正例:应用工具类包名为 com.alibaba.ai.util -
为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词
组合来表达其意。 反例:变量 int a; 的随意命名方式。 -
【强制】方法名、参数名、成员变量、局部变量都统一使用
lowerCamelCase
风格,必须遵从小驼峰形式。正例: localValue / getHttpMessage() / inputUserId
-
【推荐】 如果是形容能力的接口名称,取对应的形容词为接口名(通常是–able 的形式)。
-
推荐
1) 获取单个对象的方法用 get 作前缀。2) 获取多个对象的方法用 list 作前缀。
3) 获取统计值的方法用 count 作前缀。
4) 插入的方法用 save/insert 作前缀。
5) 删除的方法用 remove/delete 作前缀。
6) 修改的方法用 update 作前缀。
-
【强制】long 或者 Long 初始赋值时,使用大写的 L,不能是小写的 l,小写容易跟数字 1 混
淆,造成误解。
说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2?
格式
-
SQL语句的书写:
-
SELECT name,sex age FROM tb_student WHERE sex='male' and age > 50 GROUP BY ....
-
-
【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果
是非空代码块则:
1) 左大括号前不换行。
2) 左大括号后换行。
3) 右大括号前换行。
4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
-
class TaoBao{ } if (a > 3){ printf("hello"); }else if (a < -5){ printf("你好"); }else{ a++; }
-
-
【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。
-
if (a != b) while (x > 3) for (int i = 0; i < 100; i++) switch (a)
-
-
【强制】任何二目、三目运算符的左右两边都需要加一个空格。
-
a + 3;
-
-
【强制】注释的双斜线与注释内容之间有且仅有一个空格。
-
【强制】所有的覆写方法,必须加@Override 注解。
-
【强制】在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免采用
单行的编码方式:if (condition) statements;
-
if (a > 3){ printf("a > 3"); }
-
注释规约
-
【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/*内容/格式,不得使用 // xxx 方式。
-
【强制】所有的**抽象方法(包括接口中的方法)**必须要用 Javadoc 注释、除了返回值、参数、
异常说明外,还必须指出该方法做什么事情,实现什么功能。
-
【强制】所有的类都必须添加创建者和创建日期。
-
【强制】方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释, 使用/* */注释,注意与代码对齐。
-
【推荐】代码修改的同时,注释也要进行相应的修改,尤其是参数、返回值、异常、核心逻辑
等的修改。
-
【参考】好的命名、代码结构是自解释的,注释力求精简准确、表达到位。避免出现注释的
一个极端:过多过滥的注释,代码的逻辑一旦修改,修改注释是相当大的负担。
-
待办事宜(TODO):( 标记人,标记时间,[预计处理时间])
表示需要实现,但目前还未实现的功能。这实际上是一个 Javadoc 的标签,目前的 Javadoc还没有实现,但已经被广泛使用。只能应用于类,接口和方法(因为它是一个 Javadoc 标签)。
-
【参考】特殊注释标记,请注明标记人与标记时间。注意及时处理这些标记,通过标记扫描,
经常清理此类标记。线上故障有时候就是来源于这些标记处的代码。