実装方針で迷い

URLによってディスパッチ先を決めていくのは,割と簡単な作業なので,淡々と進めています。
それと並行して,各スキンタイプによる処理を加え始めているのですが,ちょっと迷い。

今のNucleusの場合,スキンタイプごとに,サポートしているスキン変数を配列に持っていて,それを参照して実行するかどうかを決めています。その部分の実装をどうするか。Nucleusと同じにしてもいいのですが,あまり格好よくありません。スキンタイプごとにサブクラスを作ってそこで対応するのがスマートですが,今度は複数のスキンタイプでサポートしているときにどうするか,という問題があります。

全部のタイプでサポートしているならば親クラスで定義してしまえばそれで済むのですが,そうでない場合,各スキンタイプに書くのは無駄です。Railsにはdelegateという機能があって,特定のメソッドをインスタンス変数に実行させることができますが,そのためだけに,他のスキンタイプ用のオブジェクトをインスタンス変数に持つのもどうなのか。まあ,それでもこれが一番きれいな気がするので,多分それにするでしょう。

これに関連してもう1つの実装として考えているのがパーサの処理部分をクラスではなくモジュールにしてしまって,コントローラにmix-inすること。これから先,Railsのコントローラで提供されている様々な機能(例えばキャッシュ)を利用していくためには,処理をなるべくコントローラ内でするのがいいのではないか,という発想です。

モジュールにした場合に機能的に問題があるのかないのか。その場合,サブクラスとして考えている分も,単なる別のモジュールという扱いになって,それぞれmix-inすることになります。一応それでも動きそうな気はするのですが,検証はしていません。まだ,モジュールの扱い方には慣れていないので,ちょっと危険な感じもします。


19 Nov, 2007 | General | | Andy
« Prev item - Next Item »
---------------------------------------------

Comments


No comments yet. You can be the first!


Leave comment

© 2007 yoursite.com | Designed by DesignsByDarren
Ported to Nucleus CMS: Suvoroff