代码规范-个⼈总结(阿⾥开发⼿册)
阿⾥开发⼿册
⼀、代码规范:
1. 接⼝中分⽅法和属性,不加修饰符号如:publc,正确为:void f()
2. long或Long,统⼀⽤Long类型处理
3. 常量按功能分类归类
4. if/for/while/switch/do等保留字与括号之间都必须加空格
5. 注释的双斜线与注释内容之间有且仅有⼀个空格
6. 当字符数超过120个时,换⾏规则:第⼆⾏相对第⼀⾏缩进4个空格,第三⾏开始不缩进
7. ⽅法参数在定义和传⼊时,多个参数都厚后边必须加空格
8. 所有相同类型的包装类对象之间值的⽐较,全部使⽤equals⽐较,如:Integer的⽐较⽤equals
9. 所有实体类必须⽤包装数据类型
10. RPC⽅法(远程调⽤⽅法)的返回值和参数必须使⽤包装数据类型
11. 所有局部变量使⽤基本数据类型
12. 定义DO/DTO/VO等POJO类时,不设定任何属性默认值
13. POJO类必须写toString⽅法
14. 类内⽅法定义顺序:公有⽅法或保护⽅法 > 私有⽅法 > getter/setter⽅法
15. 循环体中,字符串的拼接,使⽤StringBuilder的append⽅法扩展
16. 集合转数组,使⽤toArray(T[] array)带参⽅法,最好⼊参数组⼤⼩和集合元素个数⼀致
17. foreach循环中进⾏元素的remove/add操作,使⽤Iterator⽅式,
18. HashMap使⽤HashMap(int initialCapacity)初始化
19. 使⽤set唯⼀特性去重,避免使⽤contains⽅法遍历去重
20. SimpleDateFormat线程不安全,使⽤DateUtils⼯具类更好
21. 少⽤if-else,可以使⽤if() {return ;}
22. ⾼并发情况,避免使⽤等于作为中断或者退出的条件,可能出现击穿的情况,使⽤⼤于或⼩于的区间判断
23. 循环体中的语句要考虑性能,定义对象、变量、获取数据库连接,try-catch操作,尽量移⾄循环体外处理
24. 类、类属性、类⽅法注释使⽤/*内容/,不使⽤// xxx⽅式
25. 所有抽象⽅法,包括接⼝中的⽅法,必须要⽤javadoc注释,注释包括:返回值、参数、异常、还指出该⽅法做什么事情,实现什么功
能
26. 枚举类型字段都要有注释
27. 代码修改的同时,注释也要修改,包括:参数、返回值、异常、核⼼逻辑
28. 谨慎注释调代码,后续要回复的代码逻辑可以注释,永久不⽤的直接删掉,仓库有保存历史代码
29. 注释的要求:1)反应设计思想代码逻辑;2)能够描述业务含义;
30. 好的命名是⾃解释了
31. 待办事宜⽤TODO,错误不能⼯作的⽤(FIXME)
⼆、异常⽇志:
1. try…catch…异常不要⽤来做流程控制,条件控制,流程条件这些⽤if等语句处理,try…catch…只⽤于处理异常
2. 不⼤段代码进⾏try-catch,不利于定位问题
3. 捕获异常要处理它,不处理要把异常抛给调⽤者
4. ⽅法返回值可以是null,不强制返回空集合空对象,同事添加注释
5. 防⽌空指针异常,包装类和基本数据类型,数据库查询结果可能为null,远程调⽤要进⾏判断,从session中获取数据要进⾏空指针判
断,⼀连串调⽤也容易产⽣空指针异常
6. 应⽤内部推荐异常抛出,⽽跨应⽤间的rpc考虑使⽤Result⽅式,封装isSuccess()⽅法、错误码、错误信息
7. 避免重复代码,重复使⽤的要抽取
8. ⽇志⽂件⾄少保存15天,有些异常以“周”为频次发⽣
9. 使⽤⽇志框架slf4j的api,使⽤门⾯模式的⽇志框架,有利于维护和各个类的⽇志处理⽅式统⼀
10. ⽇志输出,使⽤条件形式输出或者使⽤占位符的⽅式,如:if() {logger.debug(“ok”)}
11. 异常信息要包括两类信息:案发现场信息和异常堆栈信息。如果不处理,通过关键字throws往上抛出。如:(各类参数或
对象toString + “_” + e.getMessage(), e)
12. 记录⽇志时要思考:1)⽇志有⼈看吗?2)看到这个⽇志我能做什么?3)能不能给问题排查带来好处
三、单元测试
1. 单元测试代码放在src/test/java下,保证测试粒度⾜够⼩,有助于精确定位问题,每个应⽤分层都要进⾏单元测试
2. 单元测试:BCDE,边界值测试(循环边界、特殊取值、特殊时间点、数据顺序),正确的输⼊,与设计⽂档相结合,强制错误信息
输⼊
四、安全规约
1. 敏感数据禁⽌直接展⽰,要脱敏
2. 注意反序列化注⼊(把字节流转成对象),转成不可预期的对象执⾏代码影响程序
五、MySQL数据库
1)建表
1. 表达是与否的字段,必须使⽤is_xxx的⽅式命名,数据类型⽤tinyint,(1表⽰是,0表⽰否)
2. 表名和字段名必须使⽤⼩写字母或数字,windows下不区分⼤⼩写,但linux下区分⼤⼩写
3. 表名不适⽤复数名词
4. ⼩数类型为decimal,禁⽌使⽤float和double,这两个存在精度损失问题,如果存储的数据范围超过decimal,建议将数据拆成整数
和⼩数分开存储
5. 表必备三字段:id(主键,类型bigint), gmt_create(datetime类型)主动创建, gmt_modified(datetime类型)被动更新
6. 表的命名最好加上:业务名称_表的作⽤(trade_config)
7. 库名和应⽤名称尽量⼀致
8. 如果字段使⽤频率⾼,字段长度短,名称基本⼀成不变,可以在相关联的表中冗余存储类⽬名称(即在另⼀张表中存同样⼀个字段的
数据),避免关联查询
9. 单表⾏数超过500万⾏或者单表容量超过2GB才推荐进⾏分库分表
try catch的使用方法2)索引
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论