При использовании функций для управления развертыванием я должен разбивать свои функции на множество мелких функций или одну большую функцию?

15

Я относительно новичок в модуле функций, и я прочитал противоречивые рекомендации в Интернете относительно того, проще ли поддерживать A) одну большую функцию или B) несколько более мелких функций, а затем модуль типа « контроллер функций », который перечисляет все меньшие функции как зависимости.

Немного о моей конкретной ситуации: я использую local development -> dev server -> staging server -> live serverрабочий процесс. Этот конкретный сайт почти наверняка будет единственным в своем роде, который я когда-либо разрабатывал; Я не собираюсь использовать featuresсозданный мной для этого сайт на любых других сайтах.

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

Какой подход легче поддерживать на практике - одна большая особенность или много меньших?

Патрик Кенни
источник

Ответы:

7

Сделайте несколько маленьких функций, разделенных по концептуальному слою .

Преимущества:

  1. Детальность при просмотре переопределений и выполнении возвратов - так что вам не нужно возвращать все сразу.
  2. Модульность - даже если вы не планируете многократное использование отдельных компонентов, разбивка элементов на отдельные модули поможет с ремонтопригодностью.

Для развертывания одного сайта от разработки до тестирования и производства мы используем следующую таксономию (где «сайт» заменяется уникальным машинным именем для сайта) -

  • site_typesFeature - объявляет типы контента, поля, настройки ImageCache, роли пользователей
  • site_structureФункция - объявляет контексты, представления, меню и ссылки меню , блоки, разрешения пользователя, переменные
    • зависит от site_typesFeature
  • site_contentFeature - объявляет узлы
    • зависит от site_structureFeature

Если есть несколько отдельных разделов сайта (например, Public против Private), рассмотрите возможность дальнейшего разделения:

  • site_types Особенность
  • site_structure Особенность - объявляет структурные компоненты, общие для общего и частного
    • зависит от site_typesFeature
  • site_public_structure Особенность
    • зависит от site_typesFeature
  • site_public_content Особенность
    • зависит от site_public_structureFeature
  • site_private_structure Особенность
    • зависит от site_typesFeature
  • site_private_content Особенность
    • зависит от site_private_structureFeature
smokris
источник