美文网首页
代码走查究竟该关注什么(三)

代码走查究竟该关注什么(三)

作者: hxfirefox | 来源:发表于2018-09-09 15:34 被阅读77次
拔剑吧,诸君!

在探讨完代码走查的“姿势”和“周边”后,终于要和如何落地代码走查见面了,如果说以前聊的还只是一些理论、招式的话,现在就轮到探讨一些“家伙事儿”了。

工具

市面上代码检查工具不少,例如klockwork、sonar、checkstyle等,可它们并不能替代代码走查。相比代码走查,工具存在一些弱项:

  • 缺少语境,工具并不知道代码应对的领域,因此对于代码“合适”工具无法理解
  • 缺乏交流,前面提到过代码走查是一项需要“碰撞”的集体活动

两者的目标是不一样的,工具是为保证代码“合规”,而走查是为保证代码“更好”,所以工具适用准入,而走查适用准出。这里其实涉及到了一个“走查”职责的话题,有种观点认为走查能够检查代码中的缺陷,我不否认有时候确实能发现一些疏漏,但依靠这样的检查实际上有点“掩耳盗铃”。代码是不是正确应该是开发者来保证的,可以依赖各式的xUnit或者更大颗粒度的测试框架,如果代码功能不正确是没有必要进行代码走查的,因为你不可能让一个错误变得更好只能变得更错。

虽然工具不能替代走查,却可以提升走查效率。随着工具的升级,有些走查内容可以借助工具输出,例如代码行数、命名风格、重复代码等。在代码走查之前就消除掉这些问题,这样在代码走查时我们就可以探讨一些更高级的问题了。

清单

清单

把前面文章中的观点进行整理后,大致能够获得这样一份代码走查清单,其中包含了可参考的走查维度,包括理解、结构和场景。

理解,原则就是表意清晰,并且符合领域惯例,因此不妨考虑以下走查项:

  • 测试方法定义能够清晰地说明测试功能点;
  • 测试方法使用了正确的断言验证;
  • 产品代码中类、函数、变量定义无二义性(以团队理解一致为验收准则);
  • 产品代码中类、函数、变量定义使用领域术语(由领域专家或业务专家判断);
  • 产品代码中数据、方法归属合适的类持有,封装良好;
  • 产品代码中多个并列语句表意清晰,逻辑运算易于理解。

结构,原则是修订不应对代码整体产生结构性破坏,可以通过观察和提问的方式来尝试以下走查项:

  • 修订在同一类中是否存在结构性重复;
  • 修订在多个文件中是否进行了相同的修改;
  • 修订是否破坏了原有类、方法的封装性,是否可以将修订使用新的类或方法封装;
  • 修订是否与已有代码存在逻辑上的并列、叠加以及组合关系,是否可以进行归类或抽象;
  • 修订在同一方法中是否引入了较多的分支。

场景,关注代码的可拓展性也可视作代码结构对新增场景的抗冲击能力,OCP原则是一个非常好的参考标准,所以对于场景更多的是通过一些提问来启发思考,以下有一些典型问题可以参考:

  • 当新增一种(类型/场景/设备等)时,代码结构需要如何调整?
  • 当要求并发时,代码结构需要如何调整?
  • 当引入一种新的分支条件时,方法需要如何调整?
  • 当要兼容新旧(版本/数据)时,方法需要如何调整?

需要注意的是对于场景的提问应当立足于当前实现,尤其是针对可以预见的需求,而不应漫无边际地拓展,从而跌入过度设计的泥淖中。

运用

光有理论、工具和清单是不能拥有一次好的代码走查的,你需要的是运用,但在实际中总会有尴尬时刻,比如提议代码走查却无人响应或是代码走查成了个人脱口秀等。如果你遇到了这样的尴尬,不妨试试下面的技巧:

  • 安排一位走查主持人,可以Scrum Master或其他志愿者
  • 走查可以按照提交记录进行,走查前一天的提交代码
  • 走查发现的问题要及时记录,并且在下次走查时由作者进行反馈
  • 走查优先安排新员工进行

技巧虽小却也是代码走查的一部分,它最终会形成团队代码走查的制度、习惯和意识,并将理论和工具融入其中从而常保活力。

到这我们关于“代码走查究竟该关注什么”的三篇专题就告一段落了,在这三篇专题中我们从“姿势”出发、了解了代码走查的“周边”,最后还获得了“工具”和“清单”,现在你已经拥有了我们所知道的有关代码走查该了解的信息了,现在该怎么做就看你的了!

相关文章

  • 代码走查究竟该关注什么(三)

    在探讨完代码走查的“姿势”和“周边”后,终于要和如何落地代码走查见面了,如果说以前聊的还只是一些理论、招式的话,现...

  • 代码走查究竟该关注什么(二)

    上一篇讲到代码走查是为了写出更好的代码,提到了“望、闻、问、切”四种走查姿势,这次我们聊一聊代码走查的“周边”。 ...

  • 代码走查究竟该关注什么(一)

    “白乐天每作诗,问曰解否?妪曰解,则录之;不解,则易之。” 困惑 代码走查是一个团队一天工作中或多或少都会经历的,...

  • Code Review 新识

    我曾经写过一个有关Code Review的系列文章《代码走查究竟该关注什么》,在这个系列文章中我讲述了自己观察到的...

  • 测试如何进行代码走查?

    (1)测试为什么要做代码走查?测试真的需要做代码走查么? 话说开发同学进行代码走查是因为把缺陷扼杀在摇篮里,那测试...

  • 代码走查

    目标:体系架构/设计:单一职责原则:每个类应该有且只有一个职责。更甚于此,我一般会将此原则应用于方法之上。对于某个...

  • 开发-代码走查

    近几周一直在加班,主要的工作内容就是修改已离职人员代码中的bug。 每天白天都有想骂街和砸电脑的冲动,然而看着一个...

  • 为什么代码走查没有效果

    老外的代码走查 有一篇关于代码走查的漫画,一屋子程序员在一起做代码走查,在屋子外面的人数一数 WTF 出现的频率,...

  • 2018-07-23~29周目标

    工作: 1.uart驱动代码走查。 2.SPI代码走查。 3.弄懂JFLASH使用方法:读完文档,原理验证。 4....

  • 想要的远方,其实很简单

    喜欢、 合适、 究竟是什么样的? 我又究竟该选择什么? 迷茫、 不安、 不知道该走哪个方向, 也不知道如何才能知道...

网友评论

      本文标题:代码走查究竟该关注什么(三)

      本文链接:https://www.haomeiwen.com/subject/mynlgftx.html