一、编程规约
1.命名
判断方法或变量不以is开头,特别是变量绝不能以is开头
避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命名, 使可理解性降低
在常量与变量的命名时,表示类型的名词放在词尾,以提升辨识度

2.常量定义
常量位置,仅在当前类中使用 / 当前包使用 / 跨包使用
3.代码格式
注释的双斜线与注释内容之间有且仅有一个空格。
多个参数的方法,参数之间的逗号分隔符之后需要有一个空格。
方法体内的执行语句组、变量的定义语句组、不同的业务逻辑之间或者不同的语义之间插入一个空行。相同业务逻辑和语义之间不需要插入空行。

4.面向对象规约
过时方法采用@Deprecated注解标注,并说明使用的新接口。
所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。
定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。
POJO 类必须写 toString 方法
当一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起, 便于阅读。
构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。 (init方法需要配置,示例见下图)
浅拷贝与深拷贝:https://www.cnblogs.com/plokmju/p/7357205.html








日期处理:

5.集合处理
ArrayList的subList结果不可强转成ArrayList
在使用Collection 接口任何实现类的addAll()方法时,都要对输入的集合参数进行 NPE判断

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 尽可能进行区分 异常类型,再做对应的异常处理。
捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请 将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的 内容。
捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类

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.服务器
五、安全规约
设计规约
网友评论