PDA

Ver la Versión Completa : El Clasico discurso Anti "Variables Globales"


Joacko
09-12-2004, 03:38:34
Gente, tengo una consulta para hacerles. Toda vez que comento el tema de la necesidad de usar una determinada Variable cuyo valor no se pierda en el transcurso de la aplicacion y que a su vez pueda ser usada en toda la aplicacion aparecen aquellos castigadores del empleo de dicha herramienta, condenando el uso de Variables Globales, tan solo con el fundamento de "Eso no se hace", de manera que, teniendo este espacio como lo tengo quisiera saber su opinion al respecto del uso de Variables Globales en Delphi, el porque de su poca recomendacion de uso, y las posibles variantes que hay para suplantar esta practica, ya que, en uno u otro momento de nuestras vidas como programadores Delphi, tarde o temprano necesitaremos de ellas... entonces... Como?????

Salu2

Al González
09-12-2004, 07:05:01
¡Hola a todos!

Joacko:

Interesante cuestionamiento. Sería bueno que les preguntaras «¿por qué?» a los catigadores. Me atrevo a pensar que en algunos casos se trata de fundamentalismo informático. Es decir, llevar los dogmas de una ciencia al extremo de lo impráctico.

He visto cómo a veces se reclama que todo sea orientado a objetos, que así es como debe ser un buen lenguaje de programación. No obstante, quienes hemos recorrido cierto camino en los mundos de la programación estructurada y la orientada a objetos (POO), nos hemos percatado de por qué muchos buenos lenguajes como Delphi no llegan a ser 100% orientados a objetos. La respuesta es simple: practicidad.

En muchas ocasiones las variables globales nos ayudan a centrarlizar de forma sencilla y económica datos que utilizan varios módulos de un mismo proceso en ejecución. ¿De qué otra forma guardar estos datos?; ¿en un archivo?, ni pensarlo; ¿en una estructura Record global?, es prácticamente otra variable; ¿en memoria asignada dinámicamente?, sólo cuando la variable ocupe mucho espacio y se utilice pocas veces; ¿en un objeto?, si la balanza del costo-beneficio se inclina hacia ello (dos o más instancias de la clase; compatibilidad entre capas, procesos o bibliotecas, etc.).

Pero a final de cuentas cada caso es único. Te invito a que hagas de nuestro conocimiento los detalles de cualquier situación similar, para en su momento tratar de discernirla por los quienes podamos aportar alguna opinión o sugerencia al respecto.

Espero esto sea de utilidad, seguimos en contacto.

Al González.
No hay programadores indiferentes, sólo obsesivos, decepcionados o apasionados ;).

marcoszorrilla
09-12-2004, 07:35:36
Yo utilizo la siguiente lógica:
1º.- Si existen será para utilizarlas (lógica Cartesiana)
2º.- Si un módulo, va a llamar a otro y este último necesita conocer un valor, mejor crear una variable pública desde este módulo para que el resto llamados por él o por los que él llame puedan conocerla.
3º.- Si una variable la voy a necesitar en cualquier momento sin depender del módulo en que me encuentre, entonces creo una variable global.

Para ello tengo siempre una Unit, en la que tengo todas las funciones, procedimientos y variables que va a utilizar toda la aplicación.

Un Saludo.

Neftali [Germán.Estévez]
09-12-2004, 12:20:50
...tan solo con el fundamento de "Eso no se hace",
"Eso no se hace, si no es la forma correcta de hacerlo", pero cuando debas utilizarlas, no creo que exista nadie que se oponga, entre otras cosas porque hay cosas que no existe forma de hacerlas si no es así.

Lo incorrecto es utilizar una variable global, para algo que no "es global".

NOTA: ¿Te has fijado en el var que hay encima de la sección de implementación de un form? ;)