12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【品質管理】ソフトウェアの品質を担保!コードにおける7つの大切なチェック観点

Last updated at Posted at 2022-11-14

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??

必要性が曖昧なところ、必要のないところに関しても、あえて条件を考慮してコードを書く。
ただし、人によってブレがあってはいけないので、ある程度規約として定めておく。

12
3
0

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
  3. You can use dark theme
What you can do with signing up
12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?