searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

浅谈CodeReview

2023-07-27 05:47:54
5
0

一、CodeReview意义

  1. 提升团队代码设计水平
  2. 确保代码设计和实现一致(前提需要有技术设计一环)
  3. 厘清业务逻辑细节,尤其是涉及多条业务线的情况

二、CodeReview问题

2.1 对于提交代码的同学:

1、不清楚提交代码 CR 的范围?

2、不清楚需要给哪些人提交代码 CR?

3、怎样才能让别人认真评审代码?

2.2 对于参与评审代码的同学:

1、不清楚需要 CR 代码的业务上下文是怎样的,不容易判断代码结构设计的合理性;

2、一下子提交几千行代码,哪些代码是 CR 的重点内容,哪些不是;

三、代码编写规范

1. Java: 参考阿里编码规范

2.代码审核清单:

常规项 1 代码能够工作么?它有没有实现预期的功能,逻辑是否正确等。
2 所有的代码是否简单易懂?
3 代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注释。
4 是否存在多余的或是重复的代码?(应该抽取)
5 代码是否尽可能的模块化了?
6 是否有可以被替换的全局变量?
7 是否有被注释掉的代码?
8 循环是否设置了长度和正确的终止条件?
9 是否有可以被库函数替代的代码?
10 是否有可以删除的日志或调试代码?
安全 1 所有的数据输入是否都进行了检查(检测正确的类型,长度,格式和范围)并且进行了编码?
2 在哪里使用了第三方工具,返回的错误是否被捕获?
3 输出的值是否进行了检查并且编码?
4 无效的参数值是否能够处理?
文档 1 是否有注释,并且描述了代码的意图?
2 所有的函数都有注释吗?
3 对非常规行为和边界情况处理是否有描述?
4 优先使用工业化的第三方库,衡量标准经过了大量的时间及完整文档,还有专人或组织维护
5 重要的数据结构和计量单位需要进行解释
6 是否有未完成的代码?如果是的话,是不是应该移除,或者用合适的标记进行标记比如'TODO'

四、代码评审的方式

4.1 针对线上和线下评审的基本原则:

1、when(什么时候提交): 子任务开发完成, 由代码提交者发起。

2、who(谁参与): 

a) 参与人主讲人,评审者,如果是线下评审需要有一名记录者,以提升整体评审,问题记录效率;

b) 提交给谁:

1、向团队中经验丰富的程序员提交 CR,以便于获得更加高水平的代码设计反馈;

2、大团队划分小组,小组内进行交叉CR

3、what(提交内容说明): 在提交评审的时候,需要附上一定的说明,阐述清楚这些代码主要实现逻辑(如果太大可以附上技术设计的链接和需求文档链接),主要核心逻辑在哪些文件中,这样 reviwer 在评审代码的时候可以有的放矢。4、others (其他): 

1、在迭代总结前:针对CR提出的问题需要进行总结,沉淀。 (问题沉淀模版,尽量减少大家总结时间)

4.2 线上评审

      单人评审:gitlab上提交给reviewer进行在线评审

      线上评审一般是主要的代码 CR 方式,但是在提交评审的时候还是要遵循一定的原则,以便于提高代码评审的效率。

     每次提交 CR 的代码不能超过200行,如果超过400行则需要转线下评审(建议前期子任务尽量拆分的比较合理,如果每次评审的时候一下子推给别人几千行代码,估计对应的 reviwer 看都不想看,很难保证 review 的质量);

4.3 线下评审

 线下评审的基础条件:涉及多个依赖模块或者CR 代码行超过400行

1、where: 由主讲人预定线下会议(或者腾讯会议室),邀请必须参与的角色。

2、Time: 时间不超过2个小时

五、评估机制

 
指标名称
计算公式
说明
1 单个有效评论成本 CR投入工时/CR数

CR投入工时数据获取可能不会太准确,尤其是线上评审部分

线下部分可以通过每次评审记录表进行收集反馈,并上传到Jira

2 有效问题数 提交有效的CR评论数 如果确定有效的CR数?确定要解决的CR数属于有效CR数?
3 CR消耗工时 CR结束时间-CR开始时间 代表投入成本
4 有效CR率 有效的CR评论数/总的CR评论数 总的CR评论数,可以通过api 接口获取
5 大提交占比 单次提交超过200行代码CR数/总CR数  
6 自评占比 自评CR数/总CR数  
7 人员参与度 参与CR的人数/总人数  
8 问题漏出率 1- CR召回的问题数/CR可召回的问题数  

六、奖励机制

  1. 每个迭代总结选出1-3名CR中提出高质量问题的同学。
  2. 每个迭代总结选出1-3名参与CR 次数最多的同学。

 

0条评论
0 / 1000
姜****华
2文章数
1粉丝数
姜****华
2 文章 | 1 粉丝