关于Code Review
Posted zwalker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Code Review相关的知识,希望对你有一定的参考价值。
以下是转载的一篇文章,有几个点记忆比较深刻
1: 少继承,多组合。
实际项目中,各种职业级别不同的同学一起协作修改一个 server 的代码,就会出现,职级低的同学改哪里都改不对,根本没能力进行修改,高级别的同学能修改对,也不愿意大规模修改,整个项目变得愈发不合理。对整个继承树没有完全认识的同学都没有资格进行任何一个对继承树有调整的修改,协作变得寸步难行。代码的修改,都变成了依赖一个高级架构师高强度监控继承体系的变化,低级别同学们束手束脚的结果。组合,就很好的解决了这个问题,把问题不断细分,每个同学都可以很好地攻克自己需要攻克的点,实现一个 package。产品逻辑代码,只需要去组合各个 package,就能达到效果。
2: 注重工程设计,思考自己面对的业务领域,思考可能的模型边界,模型细节
3: 大道至简。
首先,简单不是面对一个问题,我们印入眼帘第一映像的解法为简单。我说一句,感受一下。"把一个事情做出来容易,把事情用最简单有效的方法做出来,是一个很难的事情。"比如,做一个三方授权,oauth2.0 很简单,所有概念和细节都是紧凑、完备、易用的。你觉得要设计到 oauth2.0 这个效果很容易么?要做到简单,就要对自己处理的问题有全面的了解,然后需要不断积累思考,才能做到从各个角度和层级去认识这个问题,打磨出一个通俗、紧凑、完备的设计,就像 ios 的交互设计。简单不是容易做到的,需要大家在不断的时间和 code review 过程中去积累思考,pk 中触发思考,交流中总结思考,才能做得愈发地好,接近\'大道至简\'。
4: 可显性。
可显性的标准很简单,大家看一段代码,懂不懂,一下就明白了。但是,如何做好可显性?那就是要追求合理的函数分组,合理的函数上下级层次,同一层次的代码才会出现在同一个函数里,追求通俗易懂的函数分组分层方式,是通往可显性的道路。
5: 出现异常时,马上退出并给出足够错误信息。
6: 关于日志。
沉默是金。除了简单的 stat log,如果你的程序\'发声\'了,那么它抛出的信息就一定要有效!打印一个 log(\'process fail\')也是毫无价值,到底什么 fail 了?是哪个用户带着什么参数在哪个环节怎么 fail 了?如果发声,就要把必要信息给全。不然就是不发声,表示自己好好地 work 着呢。不发声就是最好的消息,现在我的 work 一切正常!
对于代码格式规范,100%严格执行,严重容不得一点沙。
文件绝不能超过 800 行,超过,一定要思考怎么拆文件。工程思维,就在于拆文件的时候积累。
函数对决不能超过 80 行,超过,一定要思考怎么拆函数,思考函数分组,层次。工程思维,就在于拆文件的时候积累。
代码嵌套层次不能超过 4 层,超过了就得改。多想想能不能 early return。工程思维,就在于拆文件的时候积累。
推荐的书籍:《unix 编程艺术》
以上是关于关于Code Review的主要内容,如果未能解决你的问题,请参考以下文章