2015-01-13 1 views
0

Я написал несколько классов и модулей, которые я могу включить в свои рубиновые скрипты, используя require/require_relative.Ruby: Какова наилучшая практика, следует ли включать класс или модуль?

Что мы должны включить в наши скрипты; классов или модулей? Есть ли какая-то польза от другой?

Простите мое невежество на эту тему. Может быть, этот вопрос глуп. Я просто хотел продвинуть свою работу в правильном направлении. Заранее благодарим за ваши комментарии/предложения.

+0

Вы прочитали это? http://stackoverflow.com/questions/3672586/what-is-the-difference-between-require-relative-and-require-in-ruby – Emanuel

+0

@ siaw23 Я прошел через ссылку. Может быть, я был неясно, извините за это. Я не прошу «как» включить модуль/классы, но «что» включить в соответствии с общей или лучшей практикой. Должен ли я писать модули или классы (с методами) для включения в мои скрипты. – vikas027

ответ

2

Модули и классы имеют много общего. Модули, которые вы, вероятно, знаете, не могут быть установлены, но классы могут. Итак, что лучше всего использовать для модулей и когда вы их используете? Наилучшим образом, самый простой ответ был бы, если у вас есть несколько классов, которые используют общие методы. Лучшая практика и самая мудрая вещь - написать модуль, который включает эти общие методы между классами и включить модуль в эти классы, где вы хотите использовать эти «общие методы». В противном случае, если у вас есть только один класс, то не имеет смысла создавать модуль для класса. Вы могли бы также создать эти методы в самом классе и полностью забыть о модуле. Если, конечно, у вас нет аналогичных методов, которые вы хотите сгруппировать в модули только ради организации и поддержания минимального кода и для рефакторинга позже (когда это произойдет).

То же самое для классов. Вы можете потребовать свои классы, если у вас есть много разных классов, которые вы организовали в своих сценариях. Это опять же имеет смысл, если у вас много классов.

Я надеюсь, что это ответили на ваш вопрос.

1

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

EDIT:

Modules or Classes: На мой взгляд Modules лучше, чем классы, как Classes фактически Modules под одеялом. И более того, Modules являются наиболее распространенными для таких требований.

+0

Я не прошу «как» включить модуль/классы, но «что» включить в соответствии с общей или лучшей практикой. Должен ли я писать модули ИЛИ классов (с методами), которые должны быть включены в мои скрипты? – vikas027

Смежные вопросы