Help us understand the problem. What is going on with this article?

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

このポストは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 でしょうか。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした