Как структурировать большое приложение на Ruby? - PullRequest
3 голосов
/ 15 июля 2009

Я подумываю о создании (большого) настольного приложения на Ruby (на самом деле игра, подумайте что-нибудь вроде Angband или Nethack с использованием Gtk + для GUI).Я пришел из C # /. NET фона, так что я немного растерян для того, как структурировать вещи.

В C # я бы создал много пространств имен, таких как Application.Core, Application.Gui и т. Д.).Части приложения, которые не нуждаются в Gui, не будут ссылаться на него с помощью оператора using.Из того, что я понимаю, в Ruby оператор require в основном выполняет текстовую вставку, которая позволяет избежать дублирования кода.Что меня беспокоит, так это использование операторов require, чтобы каждый файл / класс имел доступ ко всему остальному, потому что упорядочение операторов require.

Я прочитал некоторый код ruby, который использует модули в качестве пространств имен.,Как это работает и как это помогает?

Не уверен, что я здесь получаю ... У кого-нибудь есть хорошие советы о том, как структурировать большое приложение Ruby?Как насчет некоторых нетривиальных (и не-Rails) приложений, которые используют Ruby?

Ответы [ 2 ]

3 голосов
/ 16 июля 2009

Ruby ничем не отличается от любого другого языка, когда речь идет о структурировании вашего кода. Делай то, что кажется правильным, и это, вероятно, сработает. Я не совсем уверен, какую проблему вы ожидаете. Вы беспокоитесь о столкновении имен?

Модули - хороший способ получить псевдо-пространства имен, например.

module Core
  class Blah
    self.def method
    end
  end
end

Core::Blah.method
0 голосов
/ 15 июля 2009

Некоторые из ваших проблем связаны не с Ruby, а с циклическими зависимостями. Зависит ли Core от Gui или Gui зависит от Core? Или оба?

Хороший способ обойти эту проблему - использовать очень маленький компонент "бегущий", который зависит от ядра, компонентов доступа к данным, графического интерфейса и т. Д. И связывает их все вместе.

...