4

代码健康(1):什么是易理解的代码?

 2 years ago
source link: https://www.continuousdelivery20.com/blog/ch-understandable-code/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

乔梁 | 2021-03-01

什么是代码健康

良好的编码实践包含许多方面,并不是任何代码问题都能由检查工具发现。

例如,编写具有可读性和可维护性的代码,不仅仅是编写好的测试,或者拥有合适的检查工具,而是拥有一开始就容易理解和修改的代码。

谷歌关心软件工程过程与实践。

无论软件是手工编写,还是工具生成的,都可能影响代码的可读性、可维护性、稳定性或简单性。

因此,谷歌使用“代码健康”这个词来覆盖上述的所有方面。

如何确保工程师遵循这些实践,并且仍然允许他们独立做出合理的工程决策呢?

我们所做的工作是致力于改善工程师的日常工作状态,

使他们能够以更短的时间开发代码、减少开发工作、提高稳定性和改进性能。

每个人都希望他们的代码变得更容易理解,他们编写的库文件变得更简单。

因为我们都知道,这些东西能让我们更快前进,制造更好的产品。

这并不是说我们对谷歌的工程实践有严苛的规定。

我们仍然鼓励工程师对其项目做出自己认为最明智的决定。

什么是易理解的代码

当你看不懂别人提交给你审核的代码是什么意思时,你也许很容易会产生有一种感觉,觉得提交者比您更聪明。

但实际上,如果这段代码很难理解,那么,很可能是它过于复杂了。假如您熟悉它所使用的编程语言,那么阅读健康的代码几乎就像用您的母语阅读一本书一样简单

假设一个开发人员发给你下面这段Python代码,请你审核,

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

尝试理解它,如果理解它的时间超过几秒钟,那就是一种坏味道。此时,你只需要添加一个代码评论,说"我很难理解这段代码”,或者更具体一点,比如“请在这里使用更具描述性的命名”。

再过一会,提交者可能已经修改了代码,并将其再次发送给您审核:

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

  return True

现在我们可以很容易地阅读它,这本身就是一个好处。

通常,只需要要求开发人员写出清晰的代码,就会带来根本性的改进。 在上面的例子中,开发人员意识到了可能的性能改进,因为修改后的代码更容易理解——当数字不是素数时,函数可以更早返回了,并且循环变成为n / 2,而不是n。

现在我们可以很容易地理解这段代码了,还可以看到其中的很多问题。 例如,对于0和1,该函数会有奇怪行为,当然还有其他一些问题。但最重要的是,现在显而易见的是,应该删除整个函数,因为该函数所要实现的功能已经有预先定义的函数了,即:检测数字是否为素数的函数。澄清代码有助于开发人员和审阅者。

总之,不必浪费时间审查难以理解的代码,要求提交者将其澄清就好了。 事实上,这样的评论是代码评审员最有用和最重要的工具之一!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK