He leído muchas veces y estoy de acuerdo con evitar el uso de globales para mantener el código ortogonal. ¿El uso del archivo de configuración para mantener la información de solo lectura que su programa utiliza es similar al uso de Globals?¿El uso del archivo config es equivalente al uso de globales?
Respuesta
Si está utilizando archivos de configuración en lugar de globales, entonces sí, son similares.
Los archivos de configuración solo deben utilizarse en casos en que el usuario final (presumiblemente un usuario con conocimientos de informática, como un desarrollador) necesita declarar configuraciones para una aplicación o código, mientras mantiene sus manos fuera del código mismo .
Mi primera reacción sería que no es lo mismo. Creo que el problema con los globales es el escenario de lectura + escritura. Los archivos de configuración son de solo lectura (al menos en términos de ejecución). Del mismo modo, las constantes no se consideran un mal comportamiento de programación. Los archivos de configuración, al menos en la forma en que los uso, son constantes fáciles de cambiar.
Los archivos de configuración son realmente destinados a ser fácilmente modificable por el usuario final como una forma de decirle al programa cómo ejecutar.
Una forma más especializada de los archivos de configuración, preferencias del usuario, se utilizan para recordar las cosas entre ejecuciones del programa.
Global está relacionada con una instancia única de un objeto que nunca va a cambiar, mientras que el archivo de configuración se utiliza como recipiente para valores de referencia, para los objetos dentro de la aplicación que puede cambiar.
Un objeto "global" nunca va a cambiar en tiempo de ejecución, el otro objeto es inicializado a través de archivos de configuración, pero se puede cambiar más adelante.
En realidad, esos objetos no solo pueden cambiar durante la vida útil de la aplicación, sino que también pueden supervisar el archivo de configuración para realizar un "cambio en caliente" (modificación de su valor sin detener/reiniciar la aplicación), si el archivo de configuración está modificado.
Bueno, ya que un archivo de configuración y una variable global pueden ambos tienen el efecto de propagación de los cambios a través de un sistema - que son más o menos similares.
Pero ... en el caso de un archivo de configuración, ese cambio generalmente tendrá lugar en una sola ubicación altamente visible (para el desarrollador), y las variables globales pueden afectar el cambio de manera muy furtiva y difícil de rastrear down-por lo que de esta manera los dos conceptos no son similares.
Tener un archivo de configuración usualmente ayuda con DRY concepts, y no debería dañar el orthogonality del sistema, tampoco.
Puntos extra por usar la palabra $ 25 'ortogonal'. Tuve que buscarlo en Wikipedia para descubrir la definición no euclidiana.
Sí, leyendo El programador pragmático y el tema de los globales se presenta después del desacoplamiento. La idea de los archivos de configuración me vino a la mente y quise determinar su nivel de maldad. – osp70
No son absolutamente iguales o sustitutos para cada uno. Un archivo de configuración u objeto puede usarse de forma no global, es decir, aprobado de manera explícita.
Por supuesto, puede tener una variable global que hace referencia a un objeto de configuración, y que sería el propósito de derrotar.
- 1. Uso Yaml para MongoMapper Config
- 2. Detectando el uso de registros globales
- 3. Declaración y uso de matrices globales C#
- 4. ¿Cuál es el uso del uso de init() en JavaScript?
- 5. ¿Cómo uso los recursos globales en WPF?
- 6. ¿Cómo evitar el uso de objetos globales PHP?
- 7. Uso de variables de entorno para el archivo .config en .NET
- 8. ¿Cuál es el propósito del uso?
- 9. El uso del delegado
- 10. PHP equivalente al uso estricto de Perl (para requerir que las variables sean inicializadas antes del uso)
- 11. ¿Qué es el uso de "??"
- 12. Uso de ConfigurationManager para cargar config desde una ubicación arbitraria
- 13. ¿Por qué el uso es mejor que el uso?
- 14. Uso del archivo log4j.properties externo con Grails
- 15. uso del archivo disperso en Python
- 16. correcto uso de variables globales en Python 3
- 17. ¿Cuál es el uso de LOCAL_MODULE_TAGS?
- 18. PHP: Equivalente de incluir el uso de eval
- 19. Volver nombre de archivo al uso de OpenFileDialog
- 20. ¿Cuál es la sintaxis AAA equivalente al uso de Ordered() en Rhino Mocks
- 21. anfitriones Android archivo Uso de
- 22. "archivo no reconocido" durante el uso del enlazador GNU
- 23. Semáforo: ¿Cuál es el uso del recuento inicial?
- 24. Uso adecuado frente al uso excesivo de * args en Python
- 25. mybatis: Uso de las interfaces del correlacionador con la configuración XML para los parámetros globales
- 26. ¿Cuál es el uso del método printStackTrace() en Java?
- 27. Ventajas del uso de
- 28. ¿Cuál es el uso del método setTag de View?
- 29. Describa sus luchas con la minimización del uso de variables globales
- 30. ¿Es este un uso apropiado del polimorfismo?
No quise que la primera parte de esta respuesta sonara cortante. El punto que estaba tratando de hacer es que los archivos de configuración no son una solución alternativa para evitar los globales. –