最近RoR開発者でもある私の友人とのディスカッションがありました。私たちはRailsモデルをどのように管理すべきかについて主張しました。個人的には、ルートモデル(User、Article、Billなど)のみをデフォルトの名前空間に残しておきたいと思います。従属モデルは、ルートの名前を持つモジュール(User :: Profile、User :: Activityなど)に移動します彼らが関連付けられているモデル。Railsアプリケーションの名前空間モデル
一方、私はuser_profile、user_activityなどと呼ばれるデフォルトの名前空間に100個のモデルがある多くのプロジェクトを見てきました。 Java(Spring)の開発で判断すると、Javaコミュニティはクラスをパッケージ化し、それらを論理的にグループ化する傾向があり、非常に魅力的です。
問題は次のとおりです。モジュール内のモデルをグループ化する際に欠点はありますか(関係定義のextra:class_nameは除きます)、人々が通常それをしない理由は何ですか?
データベースエクスプローラを最後に開いたときは思い出せません。ルビーでは、自然にそのようなことを抽象化します。 私が覚えている限り、Foo :: Barは "foo_bar"テーブルを生成します。唯一の欠点は、関連でa:class_name => Foo :: Barを指定する必要があることです。 すべてのモデルを1つのディレクトリに保存することを奨励する場合、レールアプリケーションは複雑なアプリケーションをどのように扱うのだろうと思います。アプリケーションが大きくなりすぎると、必要なリファクタリングの一部を名前空間に入れたり、Javaに切り替えるだけですか? – FreeCandies
私は通常、接頭辞を一種の名前空間として使用するアプローチをとるため、UserProfileやUserActivityのようなものを作成しますプロファイルまたはアクティビティの代わりにこれにより、リスティングには自然な並べ替えが行われます。ネームスペースから大幅に利益を得る500以上のモデルを持つアプリケーションを見ることはまれです。複雑なことは複雑です。アプリケーションをどれだけ複雑にするかは、複雑さを埋めるだけで簡単に見つけようとするよりも正直である方が良い場合もあります。 – tadman