Если вы добавляете новые параметры конфигурации в программу, она часто может иметь множество волновых эффектов с точки зрения получения параметров там, где им нужно действовать. Я знаю о трех основных способах решения этой проблемы:
Передайте все параметры конфигурации тем частям вашей программы, которые явно нуждаются в них в качестве примитивов. Это наиболее явный способ и способ, который разъединяет вещи наиболее. Недостатком является то, что это и многословно и хрупко.
Сделайте наиболее часто используемые настройки конфигурации глобальными / статическими. Это самый простой способ, но вводит действие на расстоянии, затрудняет тестируемость и предполагает, что конфигурация действительно глобальна (что вам может потребоваться только одна конфигурация в любой момент времени).
Создайте класс / структуру конфигурации, которые содержат все параметры конфигурации для всей программы или для каждой основной проблемы в программе, а затем явно передайте ее. Это менее явно, чем (1), но более явно, чем (2). Если вы хотите изменить настройку только для одного вызова функции, вы можете клонировать объект конфигурации и изменить это значение. Это полезно как при тестировании, так и на практике. Тем не менее, вы все равно можете передать тонны информации в функцию, которая ей не нужна, и изменение значения в классе / структуре config все равно может вызвать действие на расстоянии.
Считаете ли вы (3) шаблон или анти-шаблон? Если это анти-шаблон, что вы делаете вместо этого?