Variables globales en programas modulares

Iniciado por Shon, 11 Septiembre 2010, 13:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Shon

Hola a tod@s

Curioseando en el código de algunas aplicaciones de fuente abierta, he visto que el main.c se usa mucho declarar variables globales, hasta el punto de haber 40 o 50 o incluso más. Supongo que esto lo hacen para poder compartirlas entre varios modulos haciéndolas accesibles con extern.

Mi duda es:

En cuánto a eficiencia del programa y al buen estilo que se debe seguir para programar... ¿Es conveniente usar tantas variables globales? O por el contrario ¿Es mejor usar más el paso de variables locales como parámetros de funciones?

Agradecería cualquier opinión al respecto, ya que tengo que programar una aplicación de sockets, y tendre unos 5 o 6 ficheros con código, en el que tengo que compartir descriptores, estructuras y cosas así, y  no sé muy bien como estructurar la aplicación en cuanto a este tema.

Gracias de antemano.

Un saludo

Horricreu

Las variables globales no son recomendables para nada ya que tienen una legibilidad menor, condiciona en muchos casos que el programa sólo sirva para un conjunto de casos determinados, el uso indiscriminado de variables globales produce efectos colaterales y atenta contra uno de los principios de la programación, la programación modular.

Saludos :P

Shon

Vaya!! Pues uno de los programas a los que me refiero es hping3:
http://www.hping.org/

Que tiene la reostia de variables globales xD

Puede haber algún motivo en el que no haya más remedio que tener que tirar de variables globales?

No me mal interpretes, no es que no me crea que no son recomendables para nada, es que me parece bastante raro, que el programador de esa aplicación haya hecho una chapuza tan grande jeje

un saludo

Horricreu

Es una mala costumbre. Por ejemplo, en casi todos los libros antiguos y alguno nuevo de C/C++ empiezan con los programas con main() en vez de int main() y cosas por el estilo... los vicios se tienen que corregir si no a la larga te encontrarás muchos problemas.

Saludos :P