Code Health:Understanding Code In Review

Google的测试博客上,有一系列关于code review的文章,具体参见https://testing.googleblog.com/2017/04/code-health-googles-internal-code.html
By Max Kanat-Alexander
在code review时,经常会遇到代码作者比自己聪明的多的情况,从而造成看不懂他们的代码。
但实际上,如果代码理解起来很困难,也有可能是因为代码本身就太复杂了。如果你对某种编程语言比较熟悉的话,review优雅的代码应该和用母语读书一样简单。

假设有开发者发给如下面的python代码块,让你review:

def IsOkay(n):
  f = False
  for i in range(2, n):
    if n % i == 0:
      f = True
  return not f

不要花费很长的时间去读懂它。你可以很简单的添加这样一条评论“这些代码很难读懂”,或者说的更具体一点“在代码中应该使用更多的有意义的变量名。”

这位开发者修正了他的代码,并让你再次review:

def IsPrime(n):
  for divisor in range(2, n / 2):
    if n % divisor == 0:
      return False

  return True

现在这些代码理解起来比较简单了,这就是收益。

通常,让一位开发者把他的代码变得容易理解,就能获得根本性的提高。在这段代码里,开发者做了性能改进,如果传参不是素数,能更早地返回了,并且for循环从N次降低到N/2次。

由于我们更简单的理解这段代码,所以我们能看到更多的问题。例如,当传入0和1的时候,这段代码就会出错;当然还有其他问题。最根本的是,这段代码本身就不应该被编写出来,应该直接使用其他已经存在的库来判断一个数字是否为素数。使代码更容易被理解,很重要,减轻了开发者和review者的工作。

总结起来,不要把时间浪费在读懂晦涩的代码上,直接要求开发者重构代码,提高代码可读性。实际上,这样的要求,是非常重要并且有效的。

原文地址:https://testing.googleblog.com/2018/05/code-health-understanding-code-in-review.html

2 thoughts on “Code Health:Understanding Code In Review

发表评论

电子邮件地址不会被公开。 必填项已用*标注

(Spamcheck Enabled)