曾经有一段垃圾代码放在个人面前,我没有拒绝,等我真正开始接手的时候我才后悔莫及,程序员最痛苦的事莫过于此!java
每当接手别人的代码,都有一种想从新写一遍的感受,等到别人再来接手你的代码时,一样的感受。。。为何会有这种现象存在?由于没有Code Reviewgit
衡量代码质量的惟一标准就是每分钟骂出“WTF” 的频率。(出自Martin(Bob大叔)《代码整洁之道》)当你的代码在作 Code Review 时,审查者要是愤怒地吼道:程序员
“What the fuck, is this shit?” “Dude, What the fuck!” 等言辞激烈的词语时,那说明你写的代码是 Bad Code,若是审查者只是漫不经心的吐出几个:编程
“What the fuck?” 那说明你写的是 Good Code。安全
你说个人code须要review?架构
一些没采起过code review模式的资深工程师可能会有一些抵触情绪,但放眼业界,code reveiw的好处是毋庸置疑的。app
Google内部人士的一段话。模块化
The biggest thing that makes Google’s code so good is simple: Code Review.函数
At Google, no code, for any product, for any project, gets checked in until it gets a positive review.性能
一、保证项目质量、提升代码可读性
二、加速我的成长、突出团队价值
三、知识传播与共享
四、凝聚团队共识
五、不断提升团队的下限
but,良好的程序设计老是优于code review,作好设计才能减小review工做量。
Code Review的内容:编程素养、业务逻辑、架构设计、单元测试、性能、安全
master项目收回提交权限,由QA把控,develop到qa分支merge须要qa review确认。
feature分支往develop分支提pr必须遵循的游戏规则:
每次提交review代码修改行数不得超过1000行,一小时内review完(先试行,最终目标400行,Cisco开发团队研究显示,进行一次Code Review不要超过400行代码(LOC, Line of Code)。大脑一次只能有效处理这么多信息,超过400 行找到缺陷的能力减弱。)
至少每一个周期(两周一个开发周期)提一次review,周五早上互相喊一下,最晚提交时间周五下午2点前,周五下午的时间用来修改review代码
须要保证单元测试覆盖到,功能点要拆分足够细
checkout feature分支后能编译运行正常
工做日能够上午11点前提pr,须要组内指派资深工程师两名, 至少一人review经过
提交pr两天内须要处理完毕,打回或经过
小步迭代,理论上每周自测完成就能够提交pr merge到develop分支
常规项
代码可以工做么?它有没有实现预期的功能,逻辑是否正确等。
全部的代码是否简单易懂?
代码符合你所遵循的编程规范么?这一般包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注释。
是否存在多余的或是重复的代码?
代码是否尽量的模块化了?
是否有能够被替换的全局变量?
是否有被注释掉的代码?
循环是否设置了长度和正确的终止条件?
是否有能够被库函数替代的代码?
是否有能够删除的日志或调试代码?
代码行数统计:查看feature分支提交了多少行代码? (exclude)掉idl目录 (java thrift项目)
git log --author="shenguanpu" --since='2019-04-22' --pretty=tformat: --numstat ":(exclude)idl" | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
added lines: 17, removed lines: 15, total lines: 2
参考文献:
https://mp.weixin.qq.com/s/A7XlAliQL__RcpK4AzuacQ 从Code Review 谈如何作技术(陈皓)
https://mp.weixin.qq.com/s/jXT1-bC7dfvzhRmh47H69g 如何写出优雅的代码
https://mp.weixin.qq.com/s/n1B0wLicwQByYslz6hYwnw 你真的会Code Review吗?
https://mp.weixin.qq.com/s/YCw7OP3RKF1EJb064IHEXg code review 有用吗?
https://mp.weixin.qq.com/s/nWntcljELd5g98b8RFTjXg code review 那些事儿
https://mp.weixin.qq.com/s/XvSuLKADV17-uF8mZmYXnw 程序员必备的代码审查(Code Review)清单
https://mp.weixin.qq.com/s/6SoJP9BMRNyLMJjwSkctUw 如何高效的Code Review
https://mp.weixin.qq.com/s/sXwuMb8lQzijWTthnaeinw 论code review代码审查
https://mp.weixin.qq.com/s/YOhKriAtUz2VViJtJRhbBw 享用腾讯免费早餐同样天然的作Code Review,他们如何作的?