コードレビューで使える7つの設計原理

プリンシプルオブプログラミング」で7つの設計原理が紹介されていました。コードレビューをするときに、人によって指摘の内容や粒度がバラバラだとソフトウェアの品質にもばらつきが生じます。そのため、ブレない共通の価値観が必要になります。 7つの設計原理は、その共通の価値観で使えて、ソフトウェアの品質を高めることができるコアとなるチェック観点です。もちろん、自分でコードを書くときにも使える原理です。

1. 単純原理

単純なやり方でシンプルに書くこと。複雑な処理をしている箇所でバグは発生しやすくなります。

2. 同型原理

一貫性のあるプログラムを書くこと。同じようなことは、同じようにやる。 他と違うものはバグが起こりやすい部分になります。

3. 対称原理

対称性のあるプログラムを書くこと。何か条件があれば、その反対の条件についても考慮すること。 対称性で考えることで、条件漏れを防ぐことができます。​

4. 階層原理

階層がある構成にすること。1つの階層では同じレベルのことをします。例えばある階層でDBのフラグを立てたら、同じ階層でフラグを落とします。 プログラムの意図や仕様が伝わりやすくなり、バグが発生しにくくなります。

5. 線形原理

分岐の少ないプログラムを書くこと。 複雑な条件分や繰り返し分でバグは起こりやすくなります。

// NGな書き方
if ($isUser) {
  if ($updateFlg) {
    if ($newUser) {
    }
  }
}

6. 明証原理

はっきりとわかりやすいプログラムを書くこと。プログラムだけでは理解が難しい場合は、コメントを書いたりドキュメントを用意すること。

7. 安全原理

ありえない条件でもあえて考慮してプログラムを書くこと。 重大なエラーを未然に防ぎます。

// 例えば、あるメソッドの返り値がnullだった場合を考慮する
$price = $this->getPrice($id);
if (isset($price)) {
  return 0;
}