美文网首页
阿里编码规范笔记(以1.2.0完美版为基础,以1.7.0嵩山版修

阿里编码规范笔记(以1.2.0完美版为基础,以1.7.0嵩山版修

作者: sundern | 来源:发表于2020-06-24 15:18 被阅读0次

一、编程规约

1.命名

判断方法或变量不以is开头,特别是变量绝不能以is开头

避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命名, 使可理解性降低

在常量与变量的命名时,表示类型的名词放在词尾,以提升辨识度

领域模型命名规约

2.常量定义

常量位置,仅在当前类中使用 / 当前包使用 / 跨包使用

3.代码格式

注释的双斜线与注释内容之间有且仅有一个空格。

多个参数的方法,参数之间的逗号分隔符之后需要有一个空格。

方法体内的执行语句组、变量的定义语句组、不同的业务逻辑之间或者不同的语义之间插入一个空行。相同业务逻辑和语义之间不需要插入空行。

换行问题

4.面向对象规约

过时方法采用@Deprecated注解标注,并说明使用的新接口。

所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。

定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。

POJO 类必须写 toString 方法

当一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起, 便于阅读。

构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。 (init方法需要配置,示例见下图)

浅拷贝与深拷贝:https://www.cnblogs.com/plokmju/p/7357205.html

推荐使用equals工具方法 基本数据类型和包装类型 init方法使用1 init方法使用2 init方法使用3 init方法使用4 最后几个无内容的不计入分割后的数据1 最后几个无内容的不计入分割后的数据2

日期处理:

正确的日期格式

5.集合处理

ArrayList的subList结果不可强转成ArrayList

在使用Collection 接口任何实现类的addAll()方法时,都要对输入的集合参数进行 NPE判断

Map集合为空情况

6.并发处理

线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式

7.控制语句

在一个 switch 块内,都必须包含一个 default 语句并且 放在最后,即使它什么代码也没有。

多层嵌套的if可以考虑是否能用多个分开的if语句代替

参数校验的一般原则

8.注释规约

方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释 使用/* */注释

合理处理注释掉的代码。在上方详细说明,而不是简单的注释掉。如果无用,则删除。 说明:代码被注释掉有两种可能性:1)后续会恢复此段代码逻辑。2)永久不用。前者如果没 有备注信息,难以知晓注释动机。后者建议直接删掉(代码仓库保存了历史代码)。

javadoc标签详解及如何生成Javadoc:https://blog.csdn.net/vbirdbest/article/details/80296136

前后端规约

9.其他

a.在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度,用法:private static final Pattern pattern = Pattern.compile(regexRule);

b.注意 Math.random() 这个方法返回是 double 类型,注意取值的范围 0≤x<1(能够 取到零值,注意除零异常),如果想获取整数类型的随机数,不要将 x 放大 10 的若干倍然后 取整,直接使用 Random 对象的 nextInt 或者 nextLong 方法

c.Instant类使用:https://blog.csdn.net/chunzhilianxue/article/details/80974202

二、异常日志

1.异常处理

对大段代码进行 try-catch,这是不负责任的表现。catch 时请分清稳定代码和非稳 定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的 catch 尽可能进行区分 异常类型,再做对应的异常处理。

捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请 将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的 内容。

捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类

NPE问题合集

2.日志规约

对日志进行分类方便查找 日志记录条件 判断日志级别

错误码

单元测试

三、Mysql数据库

1.建表规约

表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint ( 1 表示是,0 表示否

表名不使用复数名词

小数类型为 decimal,禁止使用 float 和 double

三年内,单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。

冗余设计

2.索引规约

业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。

多表关联查询 时,保证被关联的字段需要有索引。

组合索引的规约

3.SQL语句

使用 ISNULL()来判断是否为 NULL 值。注意:NULL 与任何值的直接比较都为 NULL

禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。

4.ORM映射

在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。

POJO 类的布尔属性不能加 is,而数据库字段必须加 is_,要求在 resultMap 中进行 字段与属性之间的映射(Mybatis)

不要写一个大而全的数据更新接口,传入为 POJO 类,不管是不是自己的目标更新字 段,都进行 update table set c1=value1,c2=value2,c3=value3; 这是不对的。执行 SQL 时,不要更新无改动的字段,一是易出错;二是效率低;三是增加 binlog 存储

四、工程结构

1.应用分层

2.二方库依赖

3.服务器

五、安全规约

设计规约

相关文章

网友评论

      本文标题:阿里编码规范笔记(以1.2.0完美版为基础,以1.7.0嵩山版修

      本文链接:https://www.haomeiwen.com/subject/enckfktx.html