Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: XÑA en 24 de Febrero de 2010, 10:20:42 AM

Título: Inicializar SIEMPRE las colecciones en C#
Publicado por: XÑA en 24 de Febrero de 2010, 10:20:42 AM
Trabajando en BBDD sabeis que existe un conccepto que es el campo nulo. Muchas veces ocurre que, por ejemplo, no tienen porqué indicar el país, y el valor se deja como nulo. Esto en realidad, por diseño es correcto, sin embargo es fatal para desarrollar. Me explico, resulta que cuando haga un INNER JOIN, tengo que primero analizar si el campo admite valores nulos, y por tanto usar LEFT JOIN. En la aplicación, también tengo que trabajar con la posibilidad de que sea Null, lo que significa controlar if IsNull...

Decidí hace tiempo que el ID=0 se crearía por defecto en todos los campos de este estilo y sería el texto 'Sin Determinar'. De esta forma, NO tengo que preocuparme de si tengo que hacer INNER o LEFT, ni estar recordando si el campo puede o no ser Null.

Bien, pues lo mismo me ocurre en C#. Cuando tengo una lista...¿porqué no obligo a que todas las listas estén inicializadas con un New y simplemente las borro con un Clear cuando tenga que hacerlo? ¿Consumo mucho más memoria? Falso, más consume estar comprobando cada vez if(lista==null) ....

¿Qué os parece la reflexión?
Título: Re: Inicializar SIEMPRE las colecciones en C#
Publicado por: WaaghMan en 24 de Febrero de 2010, 11:46:01 AM
Yo siempre inicializo las colecciones con New en el constructor y tal, más que nada porque para Xbox no es bueno andar haciendo news por ahí.

A mí me pasa al revés cuando por ejemplo trato con structs, que no tienen el valor null (a menos que se use Nullable), y es una putada saber si ha sido realmente inicializada o no.
Título: Re: Inicializar SIEMPRE las colecciones en C#
Publicado por: Vicente en 24 de Febrero de 2010, 05:55:24 PM
Yo creo que no hay una regla para esto, es decir, si tiene sentido que la lista siempre este inicializada, pues la inicializas en el constructor, y si no tiene sentido que siempre este inicializada pues no... Vamos, no le daria muchas vueltas con argumentos de si es mejor hacer un if o salvar 100 bytes de RAM... A veces tiene sentido usar null y a veces nop, depende de cada caso.
Título: Re: Inicializar SIEMPRE las colecciones en C#
Publicado por: Mars Attacks en 06 de Marzo de 2010, 08:39:24 PM
Citar¿Consumo mucho más memoria? Falso, más consume estar comprobando cada vez if(lista==null)

El comprobar que lista sea null no te consumirá más memoria, te consumirá más tiempo si acaso.

De todas formas, como ya han dicho, depende de la lógica de cada caso lo que uses y cómo lo uses.
Título: Re: Inicializar SIEMPRE las colecciones en C#
Publicado por: XÑA en 06 de Marzo de 2010, 08:48:27 PM
Me refería a la memoria que consume el comprobar si la lista es null.  ;)
Título: Re: Inicializar SIEMPRE las colecciones en C#
Publicado por: Mars Attacks en 13 de Marzo de 2010, 09:11:59 PM
No computa.
Título: Re: Inicializar SIEMPRE las colecciones en C#
Publicado por: Vicente en 13 de Marzo de 2010, 09:29:03 PM
Supongo que se refiere a la memoria que ocupa el código que comprueba si la lista es null (pero es solo una suposición :p).
Título: Re: Inicializar SIEMPRE las colecciones en C#
Publicado por: Mars Attacks en 14 de Marzo de 2010, 05:53:54 PM
Entonces dudo que el mayor de sus problemas sean unos 64 bits. Let the compiler to compile!