Si agrega nuevas opciones de configuración a un programa, a menudo puede tener toneladas de efectos de onda en términos de llevar las opciones a donde deben actuar. Hay tres formas básicas de lidiar con esto que conozco:
Pase todas las configuraciones a las partes de su programa que las necesitan explícitamente como primitivas. Esta es la forma más explícita y la forma en que más desacopla las cosas. La desventaja es que esto es a la vez detallado y quebradizo.
Haga que los ajustes de configuración más utilizados sean globales / estáticos. Esta es la forma más simple, pero introduce acción a distancia, dificulta la capacidad de prueba y asume que la configuración realmente es global (que solo desearía una configuración en un momento dado).
Cree una clase / estructura de configuración que contenga todas las opciones de configuración para todo el programa o para cada preocupación importante dentro del programa, y luego pase esto explícitamente. Esto es menos explícito que (1) pero más explícito que (2). Si desea cambiar una configuración solo para una llamada de función, puede clonar el objeto de configuración y cambiar este valor. Esto es útil tanto en pruebas como en la práctica. Sin embargo, aún puede pasar toneladas de información a una función que no necesita y cambiar un valor en la clase / estructura de configuración aún puede causar acción a distancia.
¿Consideraría (3) un patrón o un antipatrón? Si es un antipatrón, ¿qué haces en su lugar?