Должен ли я явно требовать все зависимости в каждом файле? - PullRequest
3 голосов
/ 30 августа 2011

Я спрашиваю это для Ruby, но я думаю, что этот принцип может быть применен к каждому проекту с несколькими файлами. Скажем, у меня есть основной файл, например application, для которого требуются другие модули model1 и model2. Оба эти модуля нуждаются в модуле common. Я видел много проектов на Ruby, которые требовали бы common в application и , а не в model1 и model2. Хотя это работает, если вы всегда используете application напрямую, если вам требуется один из модулей из другого места, вы получите NameError. Так может это влияет на модульность проекта? Должен ли я всегда предпочитать явно указывать все зависимости от каждого файла? (Не делая никаких предположений о , где файл требуется от)

Ответы [ 2 ]

1 голос
/ 30 августа 2011

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

Но нужно посмотреть, что действительно нужно.model1 и model2 нужен common или требуется mainfile.rb?(Я не думаю, что это так в вашем конкретном случае) Иногда вам не нужно загружать все требования, если одно из ваших требований (назовем это main-Requirement) уже загружает другие (под) требования.

0 голосов
/ 18 марта 2016

Я помещаю require в те самые файлы, которые используют вещи, которые require d. Это разделит ваш код на переносимые модули. Вы можете перемещать файлы между каталогами / пространствами имен, а также извлекать детали и помещать их в другие репозитории / проекты или превращать их в драгоценные камни. Практика использования require в случае необходимости также делает ваш код более коммуникативным и, следовательно, более легким для понимания. С самого начала читатель лучше информируется о зоне ответственности кода в файле.

Подставляя require в какой-либо файл верхнего или верхнего уровня, вы встраиваете соединение файла более высокого уровня с файлом более низкого уровня. Файл более высокого уровня получает знания о том, что делает файл более низкого уровня и что ему нужно. Вы также неясны, где на самом деле используются зависимости. Это делает очистку более сложной, если вы хотите удалить неиспользуемые зависимости. Вы не можете так легко сказать, где и как используется данная зависимость. Если require s помещены туда, где они используются, тогда вы можете удалить require из данного файла, когда вы удалите использование зависимостей из этого файла, и если это окажется require d в другом файле, ваше приложение не сломается из-за удаления. Если вы поместите require в файл более высокого уровня, существует риск, что разработчик может удалить использование из одного файла, а затем подумать, что зависимость больше не используется, и удалить require из файла более высокого уровня. , тем самым разбивая код в других файлах, которые его используют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...