Рельсы:Лучшая практика для расположения классов зависимостей модели?

StackOverflow https://stackoverflow.com/questions/509321

Вопрос

У меня есть приложение для рельсов, которое продвигается довольно хорошо, но тот факт, что я делаю это сам, означает, что какой-нибудь бедняга в конечном итоге увидит это и скажет: «О чем, черт возьми, ты думал?Зачем ты это сюда положил?!?!!»

Где эта бедная, жалкая душа будет ожидать увидеть серию классов, которые не используются ничем, кроме одного класса модели?Очевидно, я мог бы поместить его в the_model.rb вместе с классом TheModel, но это может выйти за рамки запланированных двух классов...

Я думал о свободе, но она не должна загромождать общий взгляд на мир....

Спасибо.

Мой предшественник благодарит вас.

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

Решение

Оставь их в the_model.rb пока они вам не понадобятся более чем в одном месте.Если вы проводите рефакторинг без необходимости, вы не делаете самую простую вещь, которая могла бы сработать. Тебе это не понадобится.

На этом этапе обычно создается каталог для «проблем».Видеть это сообщение в блоге Джеймиса Бака или это Питер Марклунд Чтобы получить больше информации.

Другие советы

В общем:следуйте соглашениям об именах Rails при переводе имен классов в местоположения файловой системы.(то есть:держать класс FooHelper::Bar в foo_helper/bar.rb)

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

Используйте модули и пространства имен классов в своих интересах.Если у вас есть вспомогательный класс, который используется только вашей моделью (и зависит от нее), поместите его в пространство имен класса модели:

class TheModel::HelperClass
end

местоположение в файловой системе будет app/models/the_model/helper_class.rb

И что-то, что не зависит от вашей модели, вероятно, все еще может быть помещено в пространство имен.

module Bar
  class Foo
  end
end

жить в bar/foo.rb, конечно

Вероятно, вам не следует бояться помещать в lib -- вот что это за каталог для

я бы сказал обеспокоенность, хотя и полезны, на самом деле не являются правильным способом, потому что это способ разделить одинокий class на несколько файлов, и вы, похоже, этого не делаете.

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