CR是什么?
是对约定开发规范不足的补充和监督,是一种团队成员间互相审核代码的机制。
CR的意义
1、有助于团队的知识共享。可以分享好的点子和技巧,快速将团队成员的代码水平拉到同一水平。
2、对规约的保证,可以补充lint的不足,例如:文件命名、变量命名、工程的结构等。
3、提高代码的质量。发现代码中lint不能检测出来的bug,例如:逻辑错误、新能问题等。
4、减缓工程腐化。由于需求变更、设计缺陷、项目中bad smells的积累,项目无可避免的出现腐化现象,CR可以让我们利用集体智慧,减少技术债务。
5、统一团队编码风格,摒弃个性化,提高代码可读性
CR实践
1、让CR成为制度的一部分
- 成为版本控制的一个环节
- 成为项目管理流程的一个环节
2、让CR成为开发文化的一部分
- CR像技术周会一样,人人都能受益。可以像培养分享习惯一样培养CR习惯,是一件个人和团队双赢的事情
谁来组织CR?
项目迭代的负责人
谁来参与CR?
1、迭代参与者
2、老人/新人
3、同组/不同组
数量控制
日常的迭代,建议由发起者指定2-3个CR,过多会给开发人员带来一定工作负担
什么时候发起CR?
1、和开发流程打通,例如:上线前、提交测试前
2、定期:防止一次CR工作量太大,可以约定定时或者某些固定时刻发起一次
CR工具
gitlab、upsource等
紧急情况来不及CR怎么办?
例如半夜hotFix的时候。项目管理机制上提前做好fallback方案,允许建立CR任务后先上线,回头再CR本次提交的代码
CR出了问题,来不及修正怎么办?
1、CR环节前置:提测前加一轮CR,如果出现大问题可以用bugfIx的时间修正
2、实在不行的情况下可以利用项目管理机制中的fallback方案