Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/09/2009, 10:20
Avatar de PacoRuiz
PacoRuiz
 
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
variables globales

He leído que en general es recomendable evitar el uso de variables globales. Estoy haciendo un código en el que creo que es adecuado su uso, pero puedo evitarlo, aunque creo que lo mejor es utilizarlas, quisiera oir opiniones al respecto.

El caso es el siguiente. Quiero hacer un código que muestre una clasificación de fotos a partir de dos bases de datos. Existen diferentes tipos de fotos, y unos tipos son hijos de otros, por ejemplo el tipo peces será hijo del tipo animales.

Un tipo puede tener varios padres, por ejemplo el tipo retratos de mujer puede ser hijo del tipo retratos y del tipo mujeres.

Todo esto se guardará en dos tablas, una tabla lamada tipos que tiene dos campos: Identificador y descripción y otra tabla llamada jerarquias que guarda parejas hijo-padre. De modo que un hijo que tenga tres padres tendrá tres registros en la tabla jerarquía.

Cuando quiero mostrar la jerarquía, unos tipos serán mostrados varias veces según el número de padres que tengan.

En el código para mostrar los tipos hago un array con la tabla tipos, para recorrerla más facilmente que si tuviera que acceder a la base de datos cada vez, ya que la recorreré muchas veces.

Hago una función llamada buscahijos(), que busca los hijos para cada tipo de foto. Ahí está la cuestión. Buscahijos es llamada dentro de la propia función buscahijos() porque hay que buscar a los hijos de los hijos y así sucesivamente, o sea que buscahijo() es llamada muchas veces, y esta función utiliza siempre el mismo array tipos. ¿Tiene sentido mandar el array cada vez como parámetro o es mejos utilizar el array como una variable global? ¿Se crea una copia del array cada vez o el array se pasa por referencia? ¿No usar variables globales supone un uso mayor de memoria debido a las sucesivas copias del array?