后端开发规范
1. Java开发规范
1.1. 命名风格:
【强制】抽象类命名以Abstract或Base开头,异常命名以Exception结尾,测试类以它要测试的类名称开始Test结束
【强制】POJO类中布尔类型的变量,都不能加is, 否则框架解析会出现序列化错误,比如:isDelete
【强制】接口中的方法和属性不要加任何修饰符号(public也不要加),保持代码整洁,并且加上有效的doc注释,尽量别在接口里定义常量
【强制】枚举类名建议加上ENUM后缀
【推荐】如果模块、类、接口使用了设计模式,在命名时需要体现出设计模式,如:OrderFactory, LoginProxy, ResourceObserver
【推荐】各层命名规范
- Service/Dao命名规范
- 获取单个对象的方法用get做前缀
- 获取多个对象的方法用list做前缀
- 获取统计值的方法用count做前缀
- 领域层命名规范
- 数据对象:xxxDo
- 数据传输对象:xxxDTO
- 展示对象: xxxVO
- POJO 是DO、DTO、VO、BO的统称,禁止命名为xxxPOJO
1.2. 常量定义:
- 【强制】long或者Long初始赋值时,不能使用小写的l,小写的容易与数字1混淆。如:Long a = 2l; 2l是数字21还是Long类型的2?
- 【强制】不要用一个常量类维护所有常量,而是应该按常量功能分类,如缓存的放在CacheConst下,系统配置的放在ConfigConst下
1.3. 数据类型定义
- 【强制】所有的POJO类必须使用包装数据类型(包装类型的默认值为null,提醒使用者自己赋值)
- 【强制】RPC方法的返回值和参数都必须使用包装数据类型(包装类型的默认值为null,RPC调用失败时,为null可以表示额外的信息)
- 【推荐】所有的局部变量都使用基本数据类型(基本数据类型的默认值为对应类型的默认值)
1.4. 其他
- 当一个类有多个构造方法或者同名方法时,应该按顺序放在一起(public>protect>private)
- 方法的返回值如果是“List、Set、Map”时,不允许返回null,而是返回Clollections底下的单例对象
- 在使用平台资源,如短信,邮件,电话,下单,支付,必须实现正确的防重放限制,如:数量限制,验证码校验,避免被滥刷
- 在发帖,评论,发送即时消息等用户生成内容的场景,必须实现防重刷,文本内容违禁词过滤等风控策略
- 不建议在循环中查询数据、新增或更新,会增加数据库查询负载,当SQL性能差时会导致长事务或锁等待,改用批量查询后使用Map匹配,批量新增和更新
- 声明式事务注解,注意事务的范围和传播性
- 非特殊情况,禁用内存分页
- 查询的时候尽量带上索引,来做唯一性查询
2. mysql数据库规范
- 表达是否概念的字段必须使用is_xxx的方式命名,数据类型为 undesigned_tinyint(1表示是, 0表示否), 如:is_deleted, 任何字段类型为非负数必须是undesigned
- 小数类型为decimal禁止使用float或者dubble,避免精度损失
- 超过3个表禁止join
- 不要使用count(列名)替代count(), 二者结果不同,count()会统计值为NULL的行,count(列名)不会
后端开发规范
http://example.com/后端开发规范/