2011-01-06 24 views
5

私はRADの名前でここであまり抽象化しようとしているのですか?「あまりにも抽象的」なものがありますか?

ここでは、3つのモデル(メインモデル、マッパーモデル、およびデータベースモデル)を持つデータベーステーブルがあるとします。それぞれ抽象モデル、マッパー、dbテーブルモデルを拡張しています。

この設定は非常にうまく機能します。操作の大半は抽象モデルに実際にあります。しかし、今私はさらに抽象化したいと思っています。私は遠くに行くの?

私はすでに基本的なCRUD操作を抽象化しましたが、今はより高度なものを抽象化することを考えています。

これは、関連するモデルをいくつかフェッチする例です。現在、私はこれを行うでしょう:

$ modelOne-> modelTwo(); modelTwoは明示的に定義されています。

私の考えは、injectModel( 'modelTwo')や魔法のような抽象メソッドを使用することでした。

私のモデルが完全性を維持するためには、常に関連ルールを作成することができます...これはあまりにも遠すぎるのですか?

アドバイスをお待ちしています。

私のコードがどれほどインコヒーレントなのか気にしません。私はそれらの部分に明確な文書とコメントを書くことができます。

+2

、「コンピュータサイエンスのいずれかの問題は、抽象化の別の層で解決することができます」。だから、「あまりにも抽象的」なものはありません。 ;) – FrustratedWithFormsDesigner

+2

Heh。もちろん、抽象化が有用でも有用でもなく、意味を妨げる役目を果たしている瞬間には、あなたは「あまりにも抽象的」になってしまいました。 – Oded

+0

正しく理解しているかどうか分かりませんが、モデル間の関係を探しているかもしれませんが、例としてdoctrine relationsを見てください:http://www.doctrine-project。org/documentation/manual/1_0/en/defining-models#relationships – tawfekov

答えて

2

これは私の現在のアプリケーションを開発する際のアプローチです。そして今、私は、Zend_Db_TableとZend_Db_Table_Rowの上に座っているモデルの関係を取得して永続化させる抽象メソッドと魔法のメソッドをたくさん持っています。

このコードを扱うときに他のメンバーが直面している苦労は言及していませんが、新しい抽象メソッドをサポートし導入するのはますます複雑になっています)です。

このアプローチは、自分のORMを書くのと同じように感じます。私は間違いなくこれを計画していました。私の最強の信念は、私が最初からドクトリンを採用すべきだったということです。

+0

これは私が持っている気分です。幸いにも、私は現在の方法を使っていくつかのアプリケーションしか開発していません。将来私はDoctrineを私のプロジェクトスケルトンに統合するつもりです。答えをありがとう! –

1

アインシュタインは「すべてはできるだけ単純にする必要がありますが、単純化する必要はありません」と言っていませんでしたか?

私のシンプルな考え方は、あなたが必要とする限り抽象化することだけです。一般的なフレームワークを比較すると、どちらが抽象度があまりにも遠いと思いますか?私はASP.NETとJavaがこれをPHPやnode.jsよりずっと多く扱っていると主張します。また、XMLとJSONを比較すると、あまりにも抽象度が高いとペイロードが重くなり、知的重みが重くなることは明らかです。私は、行うことの上に抽象学の学者であるという価値は見ていない。言い換えする

KISS

関連する問題