泥棒のテクニックから学ぶコード修正


コード修正のベストプラクティス(と言うより TIPS)

TL; DR (今北産業)

  1. 泥棒がタンスを開ける時、時短のため下の段から上へ開けていく。(らしい)
  2. コード修正もエラー解析結果の下から順に修正していく。(と良い)
  3. 下から修正して行けば、それより上のコードの行番号はズレないから。

例えば、下記のシェル・スクリプトの静的解析の結果を修正していく場合、先に 324 行目から潰して(修正して)いけば 312 行目のエラー箇所がズレない。

シェルスクリプトの静的解析結果の例(2カ所でエラーが発生している)
$ shellcheck -x -s sh */*.sh
In ./tests/run-tests.sh line 312:
    php --version | grep Xdebug 2>/dev/null 1>/dev/null && {
                                                        ^-- SC2015: Note that A && B || C is not if-then-else. C may run when A is true.

In ./tests/run-tests.sh line 324:
        . "$path_file_conf_coveralls"
          ^-------------------------^ SC1091: Not following: ../tests/conf/COVERALLS.env: openBinaryFile: does not exist (No such file or directory)

TS; DR

静的解析、ユニット・テストLinter などの結果を見ながら修正する際に、いまさらながら「泥棒のテクニック」が使えることに気付きました。

泥棒ってタンスをチェックする時に下の段から開けて行くんですって。ゲーム実況でアイテム探しをしているシーンを観て知りました。

同じように、解析結果で指摘されたコード行を「下の段から修正していく」ことで効率よく修正できるんですね。(同じファイルに複数の修正箇所がある場合に限る)

今まで、アホみたいに上から修正していました。修正するたびに、それ以降の対象行がズレていくものだから、迷子になるたびに解析を走らせてたのです。そう、タンスを上から開けては閉めて、次の段をチェックするがごとく。いやはや。

コーディングが早い人って、こう言う細かいことがサラッとできてるんだろうなぁ。