LoginSignup
0

More than 3 years have passed since last update.

コードヘルス - レビューコードを理解する

Last updated at Posted at 2020-02-21

このポストはCode Health: Understanding Code in Reviewを翻訳したものです。

あなたにコードレビューを送ってきた開発者があなたよりも賢く、そのため彼のコードが理解できないということは十分にありえるでしょう。

しかし実際には、もしコードが理解し難いのであれば、おそらく複雑すぎます。もし、あなたが使われているプログラミング言語に詳しいのであれば、健全なコードを読むことはあなたの母語で本を読むとの同じぐらい簡単であるはずです

開発者が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 ではなく、 n/2 だけ実行されます。

しかしながら、このコードが簡単に理解できるようになったので、多くの問題が見えてきます。例えば、0や1のときの挙動がおかしいです。他にもまだ問題はあります。なにより大事なことに、今では、この関数全体を取り除いて数が素数であるかを検出する既存の関数に置き換えた方がいいということが明らかです1。コードを分かりやすくすることは開発者もレビューアも助けます。

まとめると、よく分からないコードのレビューに時間を無駄にするのはやめましょう。単に分かりやすくするようにお願いすればいいのです。実際、そういったレビューコメントはコードレビューアの持つ最も便利で重要なツールです。


  1. sympy.ntheory.primetest.isprime でしょうか。 

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0