扩展规约
一. 命名规范
1. 【强制】 代码中的命名均不能以下划线或美元符号($)开始,也不能以下划线或美元符号结束。
反例: / name$ / Object$
name / __name / $Object / name
2. 【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明: 正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。
正例: alibaba / taobao / youku / hangzhou 等国际通用的名称, 可视同英文。
反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
3. 【强制】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外: DO / BO /DTO / VO / AO
正例: MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例: macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
4. 【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。
正例: localValue / getHttpMessage() / inputUserId
5. 【 强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例: MAX_STOCK_COUNT
反例: MAX_COUNT
6. 【强制】抽象类命名使用 Abstract 或 Base 开头; 异常类命名使用 Exception 结尾; 测试类命名以它要测试的类的名称开始,以 Test 结
尾。
7. String\[\] args;
反例: 使用 String args[]的方式来定义。
8. 【强制】 POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。
反例: 定义为基本数据类型 Boolean isDeleted; 的属性,它的方法也是 isDeleted(), RPC框架在反向解析的时候, "以为"对应的属性名称
是 deleted,导致属性获取不到,进而抛出异常。
9. 【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可
以使用复数形式。
正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils( 此规则参考spring 的框架结构)
10. 【强制】杜绝完全不规范的缩写, 避免望文不知义。
反例: AbstractClass" 缩写" 命名成 AbsClass; condition" 缩写" 命名成 condi,此类随意缩写严重降低了代码的可阅读性。
11. 【推荐】如果使用到了设计模式,建议在类名中体现出具体模式。
说明: 将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。
正例:
public class OrderFactory;
public class LoginProxy;
public class ResourceObserver;
12. 【推荐】接口类中的方法和属性不要加任何修饰符号( public 也不要加) ,保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要
在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。