Enumeradores, desarrolladores y cambios en aplicaciones

Una de las cosas que menos me gustan cuando he desarrollado aplicaciones son los cambios en cadenas de texto, sobre todo en los ComboBox y demas objetos similares, lo tipico del: “En vez de que ponga Izquierda que ponga Izda”, entonces habia que buscar todos y hacer cambios, si es poco usado va rapido pero si se usa mucho mas tiempo…


Se que mucha de esta funcionalidad se puede resolver con controles heredados, pero no es el fondo del asunto, supongamos que …


Cargar estos valores fijos en un combo a la antigua usanza tendriamos que hacer:


Combo.Items.add(“Izquieda”)


Combo.Items.add(“Derecha”)


Combo.Items.add(“Ambas”)


 Pero porque no usar otro metodo:


Creamos un enumerador:


public enum Mano


{Izquierda,Dercha,Ambas}


Usamos su nombre como cadenas, ademas es constante en todo el programa y ademas es facil hacer refactoring?

foreach (Mano item in Enum.GetValues(typeof(Mano)))

{Combo.Items.add(item.ToString());}


 Con el enumerador podemos hacer comparaciones con los datos (poniendo el ToString() al campo del enumerador):


if (Combo.Text == Mano.Izquierda.ToString())   {//Operaciones}


Con refactoring podemos cambiar en todo el programa Izquierda por Izda, y solventarlo rapidamente.


Para los que os pregunteis, ya y como hago yo para hacerlo con frases en vez de palabras: “Mano izquierda”, pues bien lo mismo pero con un “truquito”


public enum Mano


{Mano_Izquierda,Mano_Dercha,Ambas}


Al cargar simplemente hacemos un replace:

foreach (Mano item in Enum.GetValues(typeof(Mano)))

{Combo.Items.add(item.ToString().Replace(“_”, ” “));}


Y claro siempre que queramos usar el enumerador hay que poner el replace..


El fondo del asunto es el de acceder a una forma facil al enumerador para poder usarlo de “otra forma”.


Espero que os sea de utilidad….


 

Union Vs Union All

El otro día en un curso sobre las novedades de SQL Server 2008 con los chicos del CIIN, hablando sobre los operadores Union salió a relucir. ¿Es lo mismo dos sentencias Unidas por un Union que por un Union ALL?


A primera vista las sentencias no dan error, pero no  es lo mismo poner Union que Union ALL.


¿Diferencia?, básicamente cuando concatenamos con un Union el resultado nos saca sólo los resultados distintos, en cambio con el Union ALL, nos selecciona todos los registros, aunque este duplicado.


Con una tabla con datos: 1,2,3,4,5,6,7
Otra tabal con datos: 2,3,8,9,0


El resultado con Union seria: 1,2,3,4,5,6,7,8,9,0
El resultado con Union ALL seria: 1,2,2,3,3,4,5,6,7,8,9,0


Para resultados en los que tenemos claro que no se van a repetir los valores es conveniente usar Union ALL, debido a que Union hace un distinct de los datos, penalizando el rendimiento.


Interesante diferencia…


PD.1.: Union no sirve para campos Text y NText, pero si sirve el Union ALL (gracias Juan Ignacio).

VS Team Database RC1

 Una herramienta del Visual Studio, que todos sabemos que existe y creo que ha pasado desapercibido en Geeks, si me equivoco corregirme (será que le usamos todos), es que Microsoft ha liberado VSTS 2008 Database Edition GDR Release Candidate:

http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&displaylang=en

Así que si alguno estáis usando alguna CTP, Agosto o Septiembre, podéis descargarla, han mejorado alguna cosa, y algún error sigue habiendo, a ver si van mejorando. Ya os iré comentando alguna cosa sobre ella.

Mi primer post…

 Quiero empezar esta aventura en Geeks, saludando a tod@s.

Primero dar las gracias a Rodrigo y a la gente de Plain, por darme la alternativa, como se suele decir en los toros. Tampoco me quiero olvidar de mis compañeros y mis jefes tanto de Energy Watch, como de Oran (de ser bien nacido es ser agradecido como se suele decir).

Espero estar a la altura de este blog, mi idea es de comentar cosas sobre desarrollo , C#, Sql server, Team Database, DevExpress, Resharper y en general cualquier Add-In que cae en mis manos, aunque sin olvidarnos de todo lo nuevo con lo que Microsoft nos “obsequia” cada poco tiempo.

Sobre mi rápidamente:

Tengo 28 años, Vivo en Solares, empecé con esto del desarrollo con 11 años haciendo cursos de Basic, Lotus, DBase III… Hasta que no empecé la carrera de Ing. Informática no empezó a interesarme realmente el desarrollo. Llevo 6 años trabajando. Estuve a punto de “quemarme” pero ahora disfruto el doble (siempre que no me toque limpiar la fibra óptica, o buscar un toro de 3000 Kg ;-)…).

Otro aspecto que me apasiona es discutir con mi jefe y mis compañeros, hace la jornada más “agradable”  (el día que no hayas discutido con tu jefe es un día perdido).  

No os quiero aburrir más, asi que lo dicho, un saludo a todos.