貧弱な設計の兆候


貧弱な設計の兆候

1. 硬さ
2. 脆さ
3. 移植性のなさ
4. 扱いにくさ
5. 不必要な複雑さ
6. 不必要な繰り返し
7. 不透明さ

1. 硬さ

ソフトウェアのちょっとした変更でさえもとても難しいということ。一つの変更で、それと依存関係のあるモジュールを芋づる式に変更しなければならないような場合、設計が「硬い」という。変更を余儀なくされるモジュールが多いほど、より「硬い」設計であるという。

2. 脆さ

一つの変更によって他の多くの部分が壊れてしまうような傾向があるということ。変更した部分とは概念的に関連のない箇所まで壊れてしまうことまである。いつまでもバグリストから消えないモジュール、再設計の必要を感じているモジュール(とはいえ、できれば自分ではやりたくない)、修復すればするほどひどくなるモジュールなどが対象。

3. 移植性のなさ

他のモジュールで役に立つ部分を含んでいながら、オリジナルのモジュールからその部分を切り離すのが困難でリスクを伴う場合(数多くの単体テストを要してしまうなど)のこと。

4. 扱いにくさ

  • ソフトウェアの扱いにくさ
    設計構造を無視して変更が行われているソフトウェア

  • 開発環境の扱いにくさ
    開発環境がのろくて非効率

5. 不必要な複雑さ

設計時点で不必要な要素を含んだ設計。将来の仕様変更を見越した設計にした際に発生しやすいが、だいたいは不必要に終わってしまい、逆に設計を複雑にしてしまうという。

6. 不必要な繰り返し

似たようなコードが、ほんの少し違う形で繰り返し現れるようなソフトウェア。繰り返し箇所を見つけ、適切に抽象化することで削除することができる。システム内に重複したコードがあると、仮に重複した箇所でバグが見つかった場合、全ての重複箇所を修正しなければならなくなる。

7. 不透明さ

わかりにくいモジュール。コードは明快で表現豊かであるかもしれないが、不透明で入り組んだ表現で記述される場合もある。開発者は読み手の立場に立って考え、読み手が理解できるように皆が協力してコードをリファクタリングする必要がある。