Code Contracts en VS2012 – Parte 2

Se que probablemente he saltado explicaciones detalladas y obviamente necesarias de lo que es Code Contracts, pero pienso subsanarlo a medida que vamos avanzando en esta serie de posts. pero voy a enfocarlo de una perspectiva personal de como lo percibi yo y como lo aplique. Tampoco hare una explicacion detallada de Code Contracts porque ya existen excelentes posts que lo hacen.

Bueno, existen dos razones fundamentales por las que uno quisiera utilizar Code Contracts y mas especificamente su rewriter, porque CodeContracts como tal no es realmente “util” sin el rewriter.

  1. La posibilidad de tener una comprobacion de Precondiciones, PostCondiciones, Invariantes, Aserciones y Supociones en tiempo de ejecucion. Es decir quiero utilizar las capacidades del Rewriter, para que cuando compile mi ensamblado “inyecte” codigo de Contratos dentro de mi codigo.
  2. Otra razon es la posibilidad de tener una verificacion estatica del codigo en tiempo de compilacion, esto quiere decir que gracias a las bondades de Code Contracts, puedo tener advertencias de un posible mal diseño en mi codigo y/o sugerencias que me ayuden a mejorarlo.

Para tomar la desicion de usar o no Code Contracts y su rewriter, esta depende mucho del proyecto, mi proyecto actual, requiere el procesamiento de cientos de miles de registros en un tiempo minimo, y la desicion es usar Code Contracts, pero NO usar el rewriter para generar los ensamblados finales (por temas de performance, basicamente no quiero tener codigo “inyectado” que no controlo circulando por ahi y al que en algun momento le echare la culpa por un bajo rendimiento), pero si utilizar las capacidades de verificacion estatica de code contracts, esta caracteristica es altamente util para los desarrolladores. Sabemos que los desarrolladores trabajaran sobre el ensamblado compilado en Modo Debug y que la version final de los ensamblados sera compilada en modo Release, ya los estoy mareando verdad? pero bueno como podran “ver” hay varias combinaciones y para explicarlo mejor aqui una matriz con mi seleccion

image

Esta combinacion se plasma en las siguientes configuraciones del rewriter.

Configuracion en Modo Debug:

image

Configuracion en Modo Release:

image

Al principio puede parecer confusas estas configuraciones pero luego pueden ir retocando sus valores para tener una mayor granularidad del control del rewriter o del verificador estatico.

En la documentacion oficial de Code Contracts se encuentra un diagrama de flujo bastante explicativo que sirve tambien para elegir como usar esta herramienta, el diagrama es el siguiente:

image

Si se detienen en el anterior diagrama podran observar que la seleccion que yo realice corresponde al Usage 3.

Aun restan varios temas relacionados a Code Contracts, que seguire tocando en las siguientes entradas.

Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *