记录一次codeReview
记录一次codeReview
为什么要做CR
-
在一些开发周期较短的项目中,为了快速完成需求,不写单元测试用例,coding的时候也没有从性能、安全角度去考虑更好的实现,虽然按期提交了代码,但却不是一份高质量的代码,在运行中可能出问题
-
部分项目都是基于原有的项目上二次开发,很多功能不是自己想要的
怎么做CR
-
code review翻译过来是代码审查的意思,就是对项目中已完成功能代码的规约的统一,包括但不限于安全、规范、健壮、可扩展、可重用等方面设计
-
目前部分代码托管工具(Github、Gitlab、阿里云云效、腾讯工蜂)等已然支持CR,可以根据自己的情况选择
以上明确了为什么要做以及怎么做后,就需要结合自身项目情况进行实践
可参考《alibaba开发手册》https://mp.weixin.qq.com/s/tW-zX8ajeaDgGFEw38RR5w?spm=a2c4g.11186623.0.0.3cfe3149h06UtF
1,工程规范
-
应用分层
controller层:对访问控制进行转发,不参与业务处理
service层:业务处理层,统一规范有接口层和实现类
dao层:只与数据库交互 -
实体模型
DO:与数据库表对应,通过 dao 层向上传输数据源对象
DTO:数据传输对象,service向外传输的对象
VO/Result:视图层显示对象
Query:数据查询对象,参数超过两个时,禁止使用Map封装
2,编码规范
-
命名约束
类名使用 UpperCamelCase 风格,但以下情形例外:DO/BO/DTO/VO/AO/PO/UID 等
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格
所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式
抽象类命名使用Abstract,异常类命名使用Exception结尾,工具类Utils结尾
不允许任何魔法值(即未经预先定义的常量)直接出现在代码中 -
OOP约束
所有的覆写方法,必须加@Override 注解
不能使用过时的类或方法
equals的调用必须确保调用者不是空对象
任何货币金额,均以最小货币单位且整型类型来进行存储(BigDecimal)
不要保留无用的代码
3,数据库规约
-
建表约束
表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字
主键索引名为 pk_字段名,唯一索引名为 uk_字段名,普通索引名则为 idx_字段名
小数类型为 decimal,禁止使用 float 和 double
如果存储的字符串长度几乎相等,使用 char 定长字符串类型 -
SQL语句约束
不要使用 count(列名)或 count(常量)来替代 count(*)
使用 ISNULL()来判断是否为 NULL 值
禁止在where后面使用函数和表达式
4,其他
-
安全规约
用户敏感数据禁止直接展示,必须对展示数据进行脱敏
持久层操纵数据库禁止字符串拼接 SQL 访问数据库
controller层接受参数必须做有效性校验 -
缓存规约
缓存名称统一命名为服务名称:服务模块名称:服务业务唯一ID
欢迎大家共同交流

浙公网安备 33010602011771号