阿里编程规范


 

命名风格

 1. 代码命名不能以下划线或者美元符号开头或者结尾 2. 代码命名不能以中文拼音或者中文拼音与英文混合方式 3. 类名使用UpperCamCamelCase风格,但DO、PO、DTO、VO、BO等除外 4. 方法名、参数名、变量名统一使用lowerCamelCase,必须遵守驼峰命名 5. 常量名全部大写,单词间用下划线隔开 6. 抽象类必须以Abstract或者Base开头,异常类必须以Exception结尾,测试 类以测试的类的名称开头Test结尾 7. 类型与中括号紧挨相连标示数组 8. POJO类中布尔类型变量不要加is前缀 9. 包名统一小写,点分隔符有且有一个自然语义单词 10. 避免在父子类和不同代码块中采用相同变量名 11. 避免不规范的缩写命名 12. 在对元素命名时用完整单词组合表达其意 13. 常量和变量命名时,表示类型放在词尾,如:idList、TERMINATED_TREAD_COUNT 14. 接口、类、方法、模块使用设计模式,命名时要体现具体模式 15. 接口类中的方法和属性不要加任何修饰符,并加上有效的javadoc。 16. 接口和实现类的命名规则: 1、对于service和dao类,实现类必须用Impl结尾; 2、如果是形容能力的接口名称,取对应的形容词为接口名 AbstractTranslator实现 Translatable接口 17. 枚举类名加Enum后缀,枚举成员名称全大写,单词间用下划线隔开 18. 各层命名规范: A) Service/DAO层命名规约 1.获取单个对象的方法用get做前缀 2.获取多个对象的方法用list做前缀,如:listObjects 3.获取统计值的方法用count做前缀 4.插入方法用save/insert做前缀 5.删除方法用delete/remove做前缀 6.修改方法用update做前缀 B)领域模型命名规范 1.数据对象:xxxDO, xxx为数据库表名 2.数据传输对象:xxxDTO,xxx为业务模型相关名称 3.展示对象:xxxVO,xxx一般为网页名称 4.POJO是对DO、DTO、VO、BO的统称,禁止xxxPOJO

常量定义

 1. 代码中禁止出现魔法值 2. 在Long类型中赋值,数值后使用大写L 3. 不要在一个常量类中维护所有常量,要根据功能分开维护 4. 常量的复用层次: 1.跨应用:放在二方库中,通常在constant目录下 2.应用内:放在一方库中,通常在constant目录下 3.子工程内:放在当前子工程constant目录下 4.包内共享常量:当前包下单独的constant目录下 5.类内共享常量:直接在类内部private static final定义
5. 如果变量值只在固定的范围内变化,用enum类型定义

代码格式

 1. 如果大括号代码为空直接'{}',大括号内有代码则:左大括号左侧不换行,右侧换行;右大括号右侧换行,左侧如果不跟else等代码换行,否则不换行 2. 小括号和字符之间不能有空格,括号内字符和运算符之间有空格 如:if (a == b) 3. if、for、while、do、switch与括号之间必须有空格 4. 任何二目、三目运算符前后必须有空格 5. 采用4个空格,禁止使用tab 6. 注释的双斜线和内容要有空格 7. 强制类型转换时,右括号与强制转换值之间不用空格 8. 单行字符不超过120个,超过要换行 9. 方法在定义和传参时,必须要加空格 10. IDE的text file encoding 设置为UTF-8;IDE中 文件的换行符使用Unix格式 11. 单个方法尽量不超过80行 12. 不同逻辑、不同语义、不同业务之间的代码插入一个空行分隔符

OOP规约

 1. 不用一个类型的对象引用来访问静态方法和静态属性,直接类名访问即可 2. 所有覆写方法,必须加@Override注解 3. 相同业务含义,相同参数类型才能使用java可变参数 4. 外部依赖或者二方库依赖的接口,不能修改方法签名。接口过时必须用@Deprecated 注解,并说明新接口或者新服务是什么 5. 不能使用过时的类或者方法 6. Object的equals方法容易抛出空指针,应使用常量或者确定值的对象来调用equals 7. 所有整型包装类之间的值比较都用equals 方法比较 8. 浮点数之间的等值判断,基本类型不能用==,包装类不能用equals。 解决方案:(1) 指定一个误差范围,两个浮点数的差值在此范围之内,则认为是相等的。 (2) 使用BigDecimal来定义值,再进行浮点数的运算操作。 9. 定义DO类时,属性类型要数据库字段类型相匹配 10. 防止精度丢失,禁止使用BigDecimal(double)方式将double对象转换成BigDecimal。建议使用BigDecimal的valueOf方法 11. 基本类型和包装类型的使用标准 1.所有POJO的属性必须用包装类型 2.RPC方法的参数和返回值必须使用包装类型 3.所有局部变量使用基本变量 12. 所有POJO 不要对其属性设置默认值 13. 序列化类新增时不要修改其serialVersionUID字段 14. 构造方法里禁止加任何业务处理逻辑,有要加在init() 15. POJO类必须要写toString方法 16. 禁止在POJO类中对属性xxx 同时存在isXxx()和getXxx() 17. 使用索引访问用String的split方法得到数组时,需要对最后一个分隔符有无内容做检查 18. 一个类有多个构造方法或者多个同名方法,要按照顺序来。 19. 类中的方法顺序 :共有方法-> 私有方法 -> get/set 20. setter方法中参数名称和成员变量名称一致,不要在getter和setter方法中加业务逻辑 21. 循环体内用StringBuilder的append方法进行扩展 22. final可以修饰类,方法,变量。 23. 慎用Object的clone方法 24. 类成员与方法访问控制从严 1) 如果不允许外部直接通过new来创建对象,那么构造方法必须是private。 2) 工具类不允许有public或default构造方法。 3) 类非static成员变量并且与子类共享,必须是protected。 4) 类非static成员变量并且仅在本类使用,必须是private。 5) 类static成员变量如果仅在本类使用,必须是private。 6) 若是static成员变量,考虑是否为final。 7) 类成员方法只供类内部调用,必须是private。 8) 类成员方法只对继承类公开,那么限制为protected。

注释规范

 1. 类、类属性、类方法的注释必须使用Javadoc规范,使用/**内容*/格式,不得使用// xxx方式 2. 所有的抽象方法(包括接口中的方法)必须要用Javadoc注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能 3. 所有的类都必须添加创建者和创建日期 4. 方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释,注意与代码对齐 5. 所有的枚举类型字段必须要有注释,说明每个数据项的用途 6. 与其“半吊子”英文来注释,不如用中文注释把问题说清楚。专有名词与关键字保持英文原文即可。 7. 代码修改的同时,注释也要进行相应的修改,尤其是参数、返回值、异常、核心逻辑等的修改 8. 谨慎注释掉代码。在上方详细说明,而不是简单地注释掉。如果无用,则删除。 9. 对于注释的要求:第一、能够准确反映设计思想和代码逻辑;第二、能够描述业务含义,使别的程序员能够迅速了解到代码背后的信息。完全没有注释的大段代码对于阅读者形同天书,注释是给自己看的,即使隔很长时间,也能清晰理解当时的思路;注释也是给继任者看的,使其能够快速接替自己的工作。 10. 好的命名、代码结构是自解释的,注释力求精简准确、表达到位。避免出现注释的一个极端:过多过滥的注释,代码的逻辑一旦修改,修改注释是相当大的负担 11. 特殊注释标记,请注明标记人与标记时间。注意及时处理这些标记,通过标记扫描,经常清理此类标记。线上
详细可参考简书  阿里巴巴编码规范(Java) - 简书 (jianshu.com)
 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM