Я изучаю Ruby и Rails, и я планирую написать свое первое приложение, используя TDD через rspec. Но сейчас я нахожу некоторые трения между моими принципами и тем, как работает большинство Rails-сообществ. Большинство примеров и учебных пособий, которые я вижу, говорят мне генерировать мой код. Я могу даже создавать строительные леса для своих объектов вместе с спецификациями rspec в одной команде. Хотя это действительно пятно, это не кажется правильным. Если я создаю кучу свойств и методов, которые мне действительно не нужны сейчас, это нарушает YAGNI, верно?Неужели Ruby on Rails призывает кого-то нарушить YAGNI?
ответ
Леса могут быть полезным инструментом для быстрого прототипирования, но на самом деле он редко используется в производственных приложениях. Кроме того, строительные леса CRUD-ресурса не собираются генерировать много «лишних вещей». Но в конце концов это просто предпочтение и подгонка. Если вы можете создать эшафот и изменить его, чтобы он соответствовал вашему приложению, и это экономит ваше время. Но в целом вы обнаружите, что проще просто создавать файлы самостоятельно, как только вы узнаете нюансы фреймворка немного больше. Но в целом я не думаю, что строительные леса слишком сильно нарушают YAGNI.
Если вы генерируете много вещей, которые вы должны удалить, возможно, вы используете неправильный генератор?
Обратите внимание, что вы должны использовать эшафот для создания модели, которая также будет иметь действия в контроллере. Например, есть другие генераторы, если у вашей модели не должно быть соответствующего контроллера вообще, вы хотите generate model
, а не generate scaffold
, или если таблица действительно не нужна модель вообще, вы можете использовать generate migration
или для контроллера без модели, generate controller
и так далее.
Предположим, вы используете эшафот в нужном месте, то есть для создания модели, требующей контроллера. Леска фактически генерирует
- миграции с атрибутами в вашем входе (YGNI)
- Тестовые файлы (YGNI)
- записи контроллера для операций CRUD (Maybe YAGNI, Вы можете просто удалить методы, которые вы Дон» t необходимо для файла. Должно быть проще в любом случае, чем печатать весь файл самостоятельно)
- Просмотров за действия, которые он генерирует в контроллере (снова удалите те, которые вам не нужны)
- Файл CSS (это должен удалять или редактировать, всегда, если вы планируете перейти к производству)
Не большой вентилятор данных генераторов. Единственный, который я использую регулярно, - это «rails g migration». Это действительно личное предпочтение - но я склонен писать то, что мне нужно, для других, поскольку они мне нужны. – nzifnab