もう嫌だ!と思ったソースその①
タイトルにその①としてますが続くかどうかわかりません。
基本クラスと派生クラスのオーバーロード、オーバーライドが絡んだときの話です。 まずはソースを・・・ Form1.cs
BaseClass.cs
DerivedClass.cs
もともとはBaseClassだけだったのですが、あるパターンだけ振る舞いを変えたいという
仕様からBaseClassを継承したDerivedClassを作りました。 BaseClassはこのクラス単体で動くことはできますが、DerivedClassは一部BaseClassの 機能を使っているため単独では動きません。 生成オブジェクトは設定値によりBaseClass、DerivedClassを切り替え可能としました。 もう嫌だ!と思ったのはソースを改変するときでした。 生成するオブジェクトがBaseClassのときは問題ありません。BaseClass.cs内から 呼び出し元を順々に追っていくことができます。ただDerivedClassはそうはいきません。 BaseClass.csとDerivedClass.csを行き来しながら呼び出し元を順々に追っていかないと いけません。 こんな感じです。 パッとみて、BaseClass.csのCall10( )のreturn Call(10)はBaseClass.csのCall(int i)に目が 移りませんか?せめてにDerivedClassオブジェクトの場合はDerivedClass.csを見てねという コメントが欲しいです。できるだけ工数を減らせという理由からこうなったのは分かるけど 正直これはしんどい^^; きれいにクラス設計しなくてもいいけど、せめてここまでは考えてほしかった。。 今あるクラスを拡張(継承)したクラスの設計は注意が必要なのかも・・・。 |