Вопрос

Предисловие: Это не так много о том, как структурировать код в файлах. У меня это есть. Это скорее тема организации вашего исходного дерева. Надеюсь, кто -то просто скажет: «Вот отличная ссылка на эту тему». Тем не менее, мнения из первых рук по этому вопросу тоже приветствуются.

Итак, я немного копал по этому вопросу и нашел тонны материала на простой структуре. Я предполагаю, что к тому времени, когда вам нужно решить проблемы размера вашей кодовой базы, вы уже знаете ответ. Тем не менее, даже IDE, кажется, ведет священную войну за то, как эти проекты должны быть структурированы (что я не хотел начать в этой теме).

Java применила структуру пакета на языке. Престижность за это. Затем Eclipse позволяет использовать проекты для (потенциально) независимых - мы назовем их «ведрами» в этом примере - ведра смежного кода. У IntelliJ есть различные, но сходные концепции с «модулями» в случае синглтона «проекта». Если вам нужен другой проект, вы по сути начинаете с нуля.

Тем не менее, Rubymine не предлагает таких модулей в приложениях Ruby, и по умолчанию просто хочет внести все в корневой каталог. Это позволяет каталоги, поэтому можно по существу просто выбрать некоторую произвольную структуру дерева и работать с ней. Это подразумевает меня, их намерение состояло в том, что все классы имеют доступ ко всем другим классам в вашем проекте. Это может иметь некоторое решение благодаря использованию рубиновых «модулей» или может быть просто схемой системы чести «Не ссылайся на этот материал».

Итак, кратко выразить это, скажем, я строил концепцию «foo» и «бар», и оба зависят от класса «утилита». Может быть, я развертываю их как драгоценные камни, может быть, я не буду. Я мог бы:

  • Захлопьте их все в один проект Rubymine и просто игнорируйте тот факт, что «Foo» и «Bar» не имеют причин знать друг друга.
  • Поместите каждый в свой собственный проект Rubymine. Это кажется настоящей болью, если есть какое -либо одновременное развитие. Прежде всего, «Util» должен быть упакован отдельно, а затем включать в себя в качестве внешнего ресурса в других проектах.

Ни один из них не кажется особенно привлекательным. Тысят?

Это было полезно?

Решение

Я бы разрабатывал все три независимо, а затем сделал util драгоценным камнем. В Gemfile для каждого из Foo и Bar вы можете дать дорожка к драгоценному камню, чтобы вы могли разработать их все одновременно без боли, чтобы возиться с номерами версий и т. Д. (Для производства вы затем укажете на настоящий драгоценный камень на Rubygems или в каком -то репозитории GIT).

Для структур проекта ознакомьтесь с Рубиновая упаковка Стандарт а также Жемчужины.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top