前语

假如你不曾codereview,那么你很难体会到代码中那些隐藏的真实趣味。

上边的那句话是我最近时刻的一段codereview的真实感触,叹息,皱眉,扑哧大笑,在codereview的过程中,各种表情扑面而来,真的是千人千面,代码所表现出来的也是良莠不齐,所谓的趣味,体现在各种匪夷所思的场景,真的是难以寻觅,也很难琢磨。

就比如下面这段代码,就不得不让人笑出声,有问题吗?哎,你还甭说,运行手机上之后,只从功能上看,还真没问题,你让测试同学测10天,也很难从功能上排查出来,由于相同的判别,一次和多次是一样的,可是,从代码上看,就很直观的看出问题了,这样冗余且累赘的判别,几乎毫无含义。

code review真的很有必要!

假如说上面的代码被称为卧龙,我觉得下面要举例的代码,可以称为凤雏,由于相同的配方,了解的滋味,仅仅换了一种方法,和上面的千篇一律,几乎便是典型中的典型。

code review真的很有必要!

以上的问题,不扫除是开发同学在开发的时分由于手抖而造成,也不扫除,这样的操作,确实有它存在的含义,究竟存在即合理,可是,我说的是可是,在一个团体协作进行撸码的项目,有必定标准的束缚下,这样的问题,尽量仍是避免发生,由于实在是难以启齿。

相似的不标准之处还有许多,比如下面的几个例子:

1、逻辑相同

这个和上边那个例子是一样的,都是相同的逻辑,你if是它,else也是它,我想说的是,那你这个判别还有什么含义?

code review真的很有必要!

2、代码复杂度高

什么样的逻辑,能让你if运用那么多,当然了出了这种的上下判别比较多之外,还有一种典型的便是层级嵌套比较多,在正常的开发中,咱们尽量避免这样写,一是性能上大大折扣,二便是代码上也显得冗余。

code review真的很有必要!

3、空逻辑

既然逻辑都为空了,咱们还要它干啥,你说呢?显得漂亮,仍是能提高自己的代码行数?

code review真的很有必要!

4、无用依赖

这种倒不是什么大问题,无非便是不太漂亮而已,可是,为了整体的代码整齐度,咱们尽量仍是删除比较好,究竟也没什么用,其实也便是一个快捷键的事。

code review真的很有必要!

以上所出现的问题,均是在codereview中检查出来的,试想一下,假如没有codereview,那么这些奇奇怪怪的问题就会始终保存,无形傍边,就会越堆积越多。

解决办法

针对以上不标准的代码,怎么才干根绝呢?我信任我们会有各式各样的方法,我也信任有的企业真的可以做到言必行,行必果,所有人的代码都是严厉依照标准履行,但我更信任的是,大部分的企业在标准上都未必能做到十全十美,究竟每个人都有每个人的认识,稍不留意,代码上就会产生分歧。

怎么根绝?站在我个人的角度上看,假如没有一个严厉的管理办法,光靠必定的标准束缚,东西的检查和人工的codereview,真的很难做到百分百根绝,所以,针对条条框框的标准,严厉的管理办法才是重中之重!

1、从上至下的管理束缚

codereview有必要从上至下,制定相关准则办法,严厉依照履行,究竟靠研制人员自觉的进行检查,这个是无法实现的,有必要作为一个日常的任务,列入到实践的工作之中,才干初见成效。

我建议,这个要严,有必要要严,决不能形同虚设,不然,codereview真的很难履行,特别是大的团队。

2、代码未动,标准先行

code review真的很有必要!

要依照标准履行,有必要标准文档先落地,只要参阅的根据,研制人员才干依照文档进行标准化履行,这也是第一条的前提,也是日后代码书写的标准。

3、确认代码检查方法

代码检查方法,无非便是人工和东西检查,假如东西可以全方位的覆盖,则是最好的引荐,不然尽量加入人工的审核。

针对东西的检查,我一直也在不断的探索,之前分享过两篇文章,一篇是《一个快捷操作的Android可视化标准检查》,另一篇是,《Android打造专有hook,让不标准的代码扼杀在萌芽之中》,我们可以作为参阅,相对于人工的介入,我更引荐于东西的运用,一是节省开发人员的检查时刻,二是提高代码的检查功率

4、codereview履行方法

code review真的很有必要!

建立维护分支,兼并代码之前,有必要有人进行codereview,标准则合,不然打回。

可以组织小组内技术优异之人,作为检查代码人,组内其他成员代码兼并前由他过审,这是一套运行机制,当然了可以组织多人,具体需要看实践的情况。

也可以每日时刻段,比如下班前半小时,我们一同针对今天兼并做团体codereview,这样做的优点是,一是忙碌一天了,下班前也是最疲倦的,可以放松下身体,二是,团体检查代码的时分,也是互相学习的时分,看看彼此的优异之处,三是,多一个人检查,更能全方位的检查,避免有遗漏之处。

5、codereview检查和记载结果

怎么才干确保是否真实的进行了codereview,这个是很难验证的,假如采纳从项目的代码中去看,则耗时耗力,所以说这是一个准则和信任的结合,那么为了让codereview可以最终的落地,则需要有人不定时的检查codereview并参加其中,这个人尽量是一个leader,不然毫无威慑力。

当然了,除了检查之外,尽量codereview之后,也作为一个简单的记载,记载在案,这么做的一个目的,只要一个,让codereview真实的可以履行下去,而且可以依照必定质量的进行下去。

相关总结

作为一名近十年的老程序员,深知在实践的开发中,有些时分,时刻紧,任务重,撸码的时刻都不够,哪还有时刻进行codereview,我想,这是一部分程序员的心声,我想说的是,团队协作开发的项目,人员思想,技术水平不一,不履行codereview,怎么确保项目的标准化履行,又怎么确保项目的稳定输出?虽然说屎山代码也能跑,但后续的维护,人员的介入,势必困难。

codereview是验证代码是否标准的必经之路,不要害怕费事,也不要害怕耽误时刻,不然,跟着铢积寸累,项目的存在的问题则会越堆积越多,到后面才后知后觉,将会支付百倍的精力来维护。