モデラーとしてステップアップするために②~モデルドリブン開発におけるアーキテクチャ設計と例外処理設計
例外の設計はシステムの「アーキテクチャの土台と骨子」に大きな影響を与える最重要事項の1つである。
ソフトウエア言語として例外処理をサポートいていない場合は、関数やプロシージャの処理で想定外のことが発生した場合は、予め決めておいたフラグにエラーを意味する値をセットする。
あるいは返り値でエラーが分かる値を返す。
この方法は処理を呼びだしたクライアント側のコードが、毎回毎回フラグや返値を確認しなければならない。
基本的にはエラーが発生したときのみ、クライアント側は分かればいいので、この方式は無駄にコードサイズの圧迫につながる。
コードの修正の際にも面倒である。
クライアントがフラグや返値を確認するコードを書き忘れると大きなトラブルになりかねない。
つまり、良くないことが多い。
そこで、オブジェクト指向言語の多くは例外処理機能をサポートしている。
コンストラクタは返値を定義できないので、コンストラクタで予想外の事が起きた場合は例外処理を利用する。
例外処理は「リトライ」「エラーの回復」「クリーンアップ」「適切な対象処理のためのエラーの伝搬」など色々など便利である。
例外処理は、アーキテクチャに信頼性と耐故障性を与え、かつ、アーキテクチャをシンプルで分かり易い設計を可能にする。
ただし、例外は気を付けなければならない事もある。
継承関係にあるクラスにおいて、サブクラスはスーパークラスから継承した操作を再定義するときである。
多相(ポリモフィズム)を使う事を想定している継承階層(普通はそう)では:
●サブクラスはスーパークラスで定義している例外を勝手に増やせない(例外を発生させないように例外を減らすことは可能)
●サブクラスはスーパークラスで定義している例外の型と「同じ例外型」か「その部分型」でないいけない
この2つの規則はスーパークラスで定義していない例外が発生したらスーパークラスの操作を呼び出すクライアントは対応できないからである。
オブジェクト指向開発で例外処理を効果的・効率的に行うには例外階層の設計がポイントとなる。
例外階層の設計は単純でないし、アーキテクチャの土台と骨子となるからとても重要となる。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 6つのテーマを同時並行作業(2019.07.05)
- すっかりご無沙汰してしましました(2018.05.27)
- CCCC(C AND C++CODE COUNTER)GUIランチャーの公開(2017.04.13)
- 作成したYicesのGUIからオプションを変えSMTを行う(2017.01.19)
- 『Yices』によるSMTソルバ(2017.01.18)
最近のコメント