审查元素为什么看不见代码_代码审查:我们为什么这样做?

审查元素为什么看不见代码

许多组织的开发人员都将代码审查作为他们的核心实践之一。 尽管这听起来很合理,但是随着时间的流逝,导致采用该实践的目标被遗忘了,唯一剩下的就是实践本身的盲目应用。

为什么我们需要代码审查?

保持质量。 传播知识。 避免在生产中出现严重的错误。 保持软件设计和体系结构的一致性。 毫无疑问,所有非常有说服力和合乎逻辑的答案都是如此,但是如果这些目标是,代码审查是否是实现这些目标的最有效方法?

如果不深入了解应用代码的上下文,就很难讨论像代码审查这样的实践。 多久完成一次? 代码合并之前还是之后? 有多少人参与? 团队规模是多少? 您有分散的团队吗? 被检查代码的平均大小是多少? 几节课,每节几行或几节课,每节几百行? 代码是仅与一小部分域相关,还是涉及应用程序的多个区域? 人们是否有权拒绝正在审查的代码? 有多少人拥有这种力量? 团队负责人? 建筑师? 整个团队,包括初级开发人员? 拒绝代码会怎样? 代码库是由同一个组织的开发人员更改的,还是一个开源项目,可以接受来自世界各地的开发人员的贡献,他们彼此不认识,并且对更改的责任不高? 您在代码审查中寻找什么? 寻找错误? 缺乏一致性? 小细节,例如变量名? 大的建筑违规? 是否符合非功能性要求? 设计不好? 团队是否同意不良/良好设计意味着什么?

为了确定代码审查(及其完成方式)是否实际上是实现我们目标的最佳方法,知道这些问题的答案非常重要。

代码审查很痛苦

好吧,代码审查是一种习惯,如果被审查的代码完全烂了,也不能怪。 如果您选择在合并后几周内检查大量代码,则不能责怪代码检查。 可能痛苦的是您决定进行代码审查的方式,而不是实践本身。

什么时候以及为什么使用代码审查?

  • 在将其合并到生产中之前:我们与成对工作,并且使用非常短暂的小分支(大约2个小时的编码,很少更改类)。 两对提出拉取请求(平均每天2到5次),另一对则检查其代码。 由于我们的工作量很小,因此,尽管经常进行评论,却非常容易快捷。 代码很少被拒绝,如果被拒绝,则很容易快速修复。 这样,我们避免了很多返工,并减少了积累技术债务的机会。
  • 传播知识并避免不必要的工作:让成对的人互相检查代码有助于传播对系统不同部分的知识,还可以避免某些成对的人从事不必要的工作。
  • 在面试过程中检查提交的代码:代码不说谎。 个人简历可以。 在面试过程的第一阶段,我们要求候选人提交代码分配。 然后,我们对其进行审查,并向他们提供全面的反馈。 这是我们有机会根据其作为开发人员的基本技能来准确评估候选人的位置。
  • 指导学徒:我们的工匠会定期审查他们的学徒开发的所有服装和宠物项目。 我们发现代码审查是一种极有价值的教学技术,因为学徒首先尝试尽其所能来解决练习,然后向他们展示更好的练习方法(如果有的话)。
  • 回顾不同的方法/实验:有时我们在编写代码的方式上并不容易达成共识。 发生这种情况时,我们通常会单独进行一些工作以进行实验,然后让团队的其他成员来检查代码。 与具体的辩论相比,与无休止的“但是,如果……”问题进行无聊的对话要容易得多。

什么时候不使用代码审查?

  • 验证是否存在错误:我发现这毫无意义。 我们对此进行了测试。 仅在所有测试通过之后,才对代码进行审查。 测试是代码审查的一部分。
  • 在代码合并到生产中之后:为时已晚。 如果发现代码不够好怎么办? 如果代码已经编写,可以运行,正在生产中,并且不会在短期内更改,那么为什么要对其进行检查和更改? 如果我需要进行修改,我将等待更改。
  • 当要检查的代码太大时:审查大的更改既痛苦又不礼貌。 在上一家公司中,我们决定以团队的形式拒绝大的更改。 这对开发人员需要将这些更改分解为较小的更改,然后一点一点地提交,以便审阅者可以理解。 那也用来教他们一堂课。 只有少量提交会被审核并合并到生产中。 期。
  • 检查代码标准:我通常使用Java,并且我们在构建期间会执行许多静态分析工具。 如果代码不符合这些工具中定义的最低质量要求,则构建将失败。 如果分支构建失败,则不会检查任何代码。

在其他情况下,我会或不会使用代码审查,但这是最重要的情况。

结对编程与代码审查

当您以较小的增量,成对工作并不断轮换工作时,执行代码审查既快速又便宜。 随着领域和技术知识在团队中的快速传播,代码审查实际上已成为一种知识共享的机制,而不是真正的质量门。 配对为我们提供了更快的反馈循环,并有助于最大程度地减少许多错误。 根据我们的经验,与由单个开发人员编写的代码相比,一对编写的代码在代码审查中被接受的机会要高得多。

结论

如果我们拥有良好的团队文化,则可以避免在代码审查期间出现许多问题。 没有目标的实践是没有意义的。 在选择一种练习之前,请先弄清楚您要实现的目标,然后再选择可以帮助您的练习。 不能盲目采用惯例。 为了使它们起作用,您需要具有正确的上下文和思维方式。 否则,您将冒因自己的缺陷而指责这些做法的风险。

翻译自: https://www.javacodegeeks.com/2015/09/code-review-why-are-we-doing-it.html

审查元素为什么看不见代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值