Якщо я використовую функції для управління розгортанням, чи слід розбивати свою функціональність на багато маленьких функцій або одну велику функцію?


15

Я відносно новий в модулі функцій і читав суперечливі рекомендації в Інтернеті щодо того, чи найпростіше підтримувати A) одну велику функцію або B) кілька менших функцій, а потім модуль типу " контролер функцій ", який перераховує всі менші функції як залежності.

Трохи про мою конкретну ситуацію: я використовую local development -> dev server -> staging server -> live serverробочий процес. Цей конкретний сайт майже напевно буде єдиним у своєму роді, який я коли-небудь розробляю; Я не збираюся використовувати featuresстворені для цього сайту будь-які інші сайти.

Це змушує мене схилятися до того, щоб робити все в одній великій функції, тому що у мене були проблеми в минулому, коли я випадково визначив одні і ті ж правила в декількох функціях і потрапив у проблеми. Однак у структурі це здається мені неправильним - існують різні функції / функції, тому їх слід розділити на окремі функції. З іншого боку, я відчуваю, що роблячи це, я можу просто створити додаткову роботу і накладні витрати для себе, які нікому не принесуть користі.

Який підхід легше дотримуватися у фактичній практиці - одна велика особливість чи багато менших?

Відповіді:


7

Зробіть кілька маленьких функцій, розділених концептуальним шаром .

Переваги:

  1. Грунтовність під час перегляду заміщення та виконання ревертів - тому вам не доведеться повертати все відразу.
  2. Модульність - навіть якщо ви не плануєте повторно використовувати окремі компоненти, розбиття речей на дискретні модулі допоможе в ремонтопридатності.

Для розгортання одного сайту від розробки до тестування до виробництва ми використовуємо таку таксономію (де "сайт" замінено на унікальну машинну назву для сайту) -

  • site_typesФункція - оголошує типи вмісту, поля, налаштування ImageCache, ролі користувача
  • site_structureФункція - оголошує контексти, перегляди, меню та посилання на меню , блоки, дозволи користувача, змінні
    • залежить від site_typesОсобливості
  • site_contentОсобливість - оголошує Вузли
    • залежить від site_structureОсобливості

Якщо є кілька різних розділів веб-сайтів (наприклад, Public vs Private), спробуйте розділити речі далі:

  • site_types Особливість
  • site_structure Особливість - оголошує структурні компоненти, спільні як для державних, так і для приватних
    • залежить від site_typesОсобливості
  • site_public_structure Особливість
    • залежить від site_typesОсобливості
  • site_public_content Особливість
    • залежить від site_public_structureОсобливості
  • site_private_structure Особливість
    • залежить від site_typesОсобливості
  • site_private_content Особливість
    • залежить від site_private_structureОсобливості
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.