リファクタリング

『あまxx』および『きのこxx』ではヴァージョン3.24 stable rev. 3のKAGが用いられています。もっと正確に書くと、そのヴァージョンのKAGのソースに独自のコードを追加することによってある種の機能を追加していたのでした。そして『きのこxx』では、『あまxx』のソースコードに更にコードを追加して開発したのですが、このままではKAGのヴァージョンを上げることができません。

次回作ではさすがにヴァージョンアップした方が良いでしょうから、この構造的な問題の解消するべくリファクタリング。前2作の制作過程でぐちゃぐちゃにKAGのソースに紛れ込んだ独自のコードを子クラスにまとめることによって、『きのこxx』が3.28-stableでほぼ動作するようになりました。

初めから継承を使って、KAGのソースをほとんど書き換えないようなスタイルで機能追加をしていれば、こんな手間もなかったわけで、昔の自分を恨むばかりです。

ただし、継承は勿論万能ではなく、イベントハンドラに関しては安易に継承してもうまくいかないことが多いです。例えばKAGWindowのonCloseQuery。元のKAGWindowクラスのonCloseQueryを変更せず、メソッドのオーバーライドのみによって、デフォルトの終了確認ダイアログではなく独自の終了確認ダイアログを使う方法はあるのでしょうか。KAGWindowクラスのonCloseQueryは、引数としてtrueが与えられた時に親クラスにtrueを伝播させてくれないのです! 継承される事を想定したデザインになっていません。