记录一次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

欢迎大家共同交流

posted @ 2021-09-28 16:29  |CV工程师|  阅读(87)  评论(0)    收藏  举报