La mayoría de los programas que escribo son procesos relativamente organigramatibles, con un inicio definido y un final esperado. Los problemas en sí mismos pueden ser complejos, pero no se inclinan fácilmente hacia el uso central de objetos y la programación dirigida por eventos. A menudo, simplemente estoy agitando grandes lotes de datos de texto para producir diferentes datos de texto. Solo ocasionalmente necesito crear una clase: como ejemplo, para rastrear advertencias, errores y mensajes de depuración, creé una clase (Problemas) con una instanciación (myErr), que creo que es un ejemplo del patrón de diseño de Singleton . Como un factor adicional, mis colegas son más de la vieja escuela (de procedimiento) que yo y no están familiarizados con la programación orientada a objetos, por lo que soy reacio a crear cosas que no pudieron descifrar.Describa sus luchas con la minimización del uso de variables globales
Y sin embargo, oigo, una y otra vez, cómo incluso el patrón de diseño de Singleton es realmente un antipatrón y debe evitarse porque las variables globales son malas.
Las funciones secundarias necesitan pocos argumentos y no tienen necesidad de conocer la configuración (sin cambios) o el estado del programa (cambio) - Estoy de acuerdo. Sin embargo, las funciones en el medio de la cadena, que controlan principalmente el flujo del programa, necesitan un gran número de variables de configuración y algunas variables de estado del programa. Creo que pasar una docena o más de argumentos junto con una función es una "solución", pero difícilmente atractiva. Podría, por supuesto, meter variables en una sola matriz hash/dict/asociativa, pero parece una trampa.
Por ejemplo, al conectarme al Directorio Activo para crear una nueva cuenta, necesito variables de configuración como un nombre de usuario administrativo, contraseña, una unidad organizativa objetivo, algunos grupos predeterminados, un dominio, etc. Tendría que pasar esos argumentos a través de una variedad de funciones que ni siquiera las usarían, simplemente las baraja a través de una cadena que eventualmente conduciría a la función que realmente las necesita.
que habría al menos declaran las variables de configuración para que sea constante, para protegerlos, pero mi idioma de su elección en estos días (Python) no proporciona ninguna manera simple de hacer esto, sin embargo existen recetas como soluciones temporales.
Numerosas preguntas de desbordamiento de pila han llegado al por qué? de la maldad y el requisito de rehuir, pero no suelen mencionar consejos sobre cómo vivir con esta restricción casi religiosa. ¿Cómo resolvió, o al menos hizo las paces con, la cuestión de las variables globales y el estado del programa? ¿Dónde has hecho compromisos? ¿Cuáles han sido tus trucos, aparte de empujar una bandada de argumentos a las funciones?
Buena pregunta: ¿está categorizando las variables de nivel de clase (miembro) como variables globales? –