viernes, 1 de enero de 2010

Asignar una Enum a un ComboBox

Cuando haya que asignar a un ComboBox los valores de una enumeración (Enum) lo que se hará será asignar al DataSource del ComboBox el método Enum.GetValues() de manera que el ComboBox se rellene automáticamente con todos los valores permitidos.

El código quedaría así:

Me.ComboBox1.DataSource = System.Enum.GetValues(GetType(MyEnum))

Si usamos los controles de DevExpress entonces habrá que usar el ImageComboBoxEdit y dentro de la colección de items (ImageComboBoxEditItemCollection) usar el método AddEnum.

En este caso el código quedaría así:

Me.ImageComboBoxEdit1.Properties.Items.AddEnum(GetType(MyEnum))

jueves, 31 de diciembre de 2009

Captura de múltiples excepciones con una misma función

Cuando tengamos un bloque Try ... Catch en el que se deban capturar diferentes tipos de excepciones pero todos los tipos requieran un mismo tratamiento se usará el bloque con la siguiente sintaxis:


Sintaxis del patrón

Por supuesto dentro del bloque Catch se pondrá el tratamiento deseado de la excepción.

miércoles, 30 de diciembre de 2009

Nomenclatura de variables

Las variables de clase siempre empezarán con el prefijo m_ (parece ser que en C# existe la tradición de hacerlo con el prefijo _ , esto debe evitarse puesto que iniciar el nombre de una variable con _ no es CLS Compliant).

Las constantes (aunque se minimizará el uso de estas en favor de Settings de aplicación como se indicará en una norma más adelante) siempre empezarán con el prefijo c_ . También se considerarán constantes a este efecto las variables ReadOnly.

Todas las variables tendrán un nombre que permita entender fácilmente su función en el código, intentando limitar su longitud pero nunca anteponiendo ésta a su comprensión. El objetivo es que se pueda leer el código de una manera lo más humana posible. No se usarán nunca abreviaturas en los nombres.

Está norma también es de aplicación en los bucles, no se usarán variables del estilo i,j,k. En su lugar se usarán  variables que aporten legibilidad al código como index, carItemIndex, etc.

Las variables locales de un método o los parámetros de éste no tendrán nunca ningún prefijo.

Todas las variables se capitalizarán siempre en CamelCase.

Esta norma nos permite visualizar instantáneamente cuando miramos el código de un método si las instrucciones afectan a variables de clase o a variables locales.


Ejemplo de nomenclatura

martes, 29 de diciembre de 2009

Ficheros de código

Habrá un fichero para cada clase, interfaz o enumeración y un fichero no contendrá más de un elemento. El nombre del fichero será el mismo que el del elemento que lo contenga.

La única excepción a esta regla será cuando se usen clases privadas aunque el uso de estas será extremadamente limitado.

Usando esta norma conseguimos saber de un vistazo el listado de objetos de un assembly con tan solo mirar la lista de ficheros que el proyecto del assembly contiene.


Ejemplo de nomenclatura

lunes, 28 de diciembre de 2009

Bienvenidos

Bienvenidos al nacimiento de este nuevo Blog donde pretendo recoger todas las normas de estilo y los patrones que uso en el día a día.



Estoy plenamente convencido de que usar normas y patrones hacen nuestros programas mucho más consistentes, fáciles de comprender y robustos puesto que sirven para reutilizar soluciones a problemas cuyo éxito ya ha sido comprobado. Además hacen que programar sea una tarea más sencilla pues nos evita tener que pensar en ciertos aspectos de la programación en los que simplemente hay que aplicar una norma y eso nos permite centrarnos en otros aspectos más centrados en el problema que debemos resolver.

El hecho de publicar dichas normas y patrones cumple dos propósitos, por una parte permite la discusión de dichos elementos y por otra permite recogerlos en una lista para poder ser consultados. La idea inicial es publicar un elemento por día.

Todas las normas toman como referencia la normativa descrita por Microsoft en su herramienta FxCop y las que están presentes en el libro Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries. Cuando se recomiende ir contra una de las normas de esas guías se indicará expresamente y se razonará el porqué.

Espero que estas normas os sean tan útiles como me resultan a mi.