Якщо додати в програму нові параметри конфігурації, вона часто може мати безліч ефектів пульсації з точки зору отримання варіантів того місця, де потрібно діяти. Є три основні способи впоратися з цим, про які я знаю:
Передайте всі налаштування конфігурації частинам вашої програми, які явно потребують їх як примітиви. Це найбільш очевидний спосіб і спосіб, який розв'язує речі найбільше. Мінус у тому, що це одночасно багатослівний та крихкий.
Зробіть параметри конфігурації, що найчастіше використовуються, глобальними / статичними. Це найпростіший спосіб, але вводить дії на відстані, перешкоджає встановленню і передбачає, що конфігурація справді є глобальною (що вам потрібно лише одна конфігурація в будь-який момент часу).
Створіть клас / структуру конфігурації, що містить усі параметри конфігурації для всієї програми або для кожної основної проблеми в програмі, а потім явно передайте це навколо. Це менш явно, ніж (1), але більш явно, ніж (2). Якщо ви хочете змінити налаштування лише для одного виклику функції, ви можете клонувати об’єкт конфігурації та змінити це одне значення. Це корисно як на тестуванні, так і на практиці. Однак ви все-таки потенційно передаєте тонни інформації функції, яка їй не потрібна, і зміна значення в класі / структурі config все одно може викликати дію на відстані.
Чи вважаєте ви (3) шаблоном чи антидіаграмою? Якщо це анти-візерунок, що ви робите замість цього?