2009-07-15 6 views
3

私はRubyに(大規模な)デスクトップアプリケーションを書くことを検討しています(実際には、GUIのためにGtk +を使ってAngbandやNethackのようなものを考えてください)。私はC#/ .NETのバックグラウンドから来ているので、物事を構成する方法は少し失われています。大きなRubyアプリケーションを構築するには?

C#では、Application.Core、Application.Guiなどのような多くの名前空間を作成します。 Guiを必要としなかったアプリケーションの部分は、usingステートメントでそれを参照しませんでした。私が理解していることから、Rubyでは、requireステートメントは基本的に、重複したコードを避けるテキストの挿入を行います。私が心配しているのは、requireステートメントの使用によって、すべてのファイル/クラスは、requireステートメントの順序付けのために他のすべてにアクセスすることになります。

モジュールを名前空間として使用するルビコードを読んだことがあります。それはどのように機能し、どのように役立ちますか?

私はここで何を得ているのかよくわかりません...誰かが大きなRubyアプリケーションをどのように構築するかについての良い指針を持っていますか? Rubyを使用するいくつかの重要ではない(そしてRails以外の)アプリはいかがですか?

答えて

0

あなたの問題のいくつかは、Rubyに特有のものではありませんが、それは循環の依存関係です。 CoreはGuiに依存していますか、GuiはCoreに依存していますか?または両方?

この問題のいくつかを回避するには、コア、データアクセスコンポーネント、GUIなどに依存する非常に小さな「ランナー」コンポーネントを使用し、これらをすべて結びつけてください。

+0

いいえ、ありません。私はすでにランナーを持っていますが、基本的には必要なものがたくさんあり、GUIを作成して実行します。 –

3

Rubyは、コードを構造化する際に他の言語と違いはありません。正しいと感じることを実行し、おそらく動作します。私はあなたがどんな問題を予期しているかを完全には分かっていません。名前の衝突が心配ですか?

モジュールは擬似名前空間を取得するのに適しています。

module Core 
    class Blah 
    self.def method 
    end 
    end 
end 

Core::Blah.method 
+0

もちろん、それは意味的には機能しません。なぜなら、 'blah'は一定である必要があり、このようにアクセスする必要があるからです。 - Core :: Blah.method - "method"がクラスメソッドだった場合。それでも、+1 –

関連する問題