7つの設計原理
7つの設計原理について本記事では記載する。
尚、解説時には、以下の3つの形式に分けて解説する。
- what??
- why??
- how??
7つの設計原理とは??
what??
障害を作り込まないために考慮すべき、コードの構造上の7つの核心観点のこと。
①単純原理
②同型原理
③対象原理
④階層原理
⑤明証原理
⑥安全原理
⑦線形原理
why??
7つのチェック観点によって、コードレビューに一貫性を持たせて、ソフトウェアの品質を担保するため。
how??
- コードレビュー時に共通の観点として持っておく。
- コードを作り込むときにも考慮。
①単純原理
what??
- シンプルにこだわるという原理。
- 局所的な完全性を重視。
why??
シンプルで見通しの良いコードを書くことで、障害を発生させないため。
how??
- コードを単純で小さいままで保つ。
- 高級なコードを書きたいという誘惑に負けない。
②同型原理
what??
同じことは同じように扱うことにこだわるという原理。
why??
- 違うものを際立たせることで、障害を発見しやすくするため。
- コードの可読性を上げるため。
how??
独創的なコードを書きたいというエゴに耐え、コードに一貫性を持たせる。
③対称原理
what??
あるものの「対」になるものを用意するという原理。
why??
- 可読性の向上。
- 条件漏れの防止。
how??
- 「条件」があれば「反条件」にもこだわる。
- 例外的な状況を考慮しつつ、極力それを排除する。
- 対称性を持った命名を行う。
④階層原理
what??
構造を階層関係にすることを常に意識し、整理された関係性を維持するという原理。
why??
- コードの可読性向上のため。
- バグの発生の減少のため。
how??
- コードの各々について、抽象レベルを意識して、階層構造を構築する。
- 1つの階層は同じ抽象レベルのものだけで構成する。
⑤線形原理
what??
処理の流れは直線的であることにこだわるという原理。
why??
- 可読性の向上。
- 改善のしやすさの向上。
how??
- 特殊な処理の振る舞いを、主処理に混ぜて書かないようにすることで、処理の分岐を少なくする。
- 保守時に複雑化しすぎたものは、再構築も考慮する。
⑥明証原理
what??
一見して明らかに正しいコードを書くという原理。
why??
可読性向上のため。
how??
- 明らかに誰でも理解できるようなコードを書く。
- 既存のコードを再利用する際は、動作仕様、文脈をきちんと確認してから流用を心がける。
⑦安全原理
what??
ありえないという条件をあえて考慮して、コードを書くという原理。
why??
サービスの継続、データ破壊の防止のため。
how??
必要性が曖昧なところ、必要のないところに関しても、あえて条件を考慮してコードを書く。
ただし、人によってブレがあってはいけないので、ある程度規約として定めておく。