miércoles, 4 de junio de 2008

Buscando Formas de depurar remotamente

Un claro ejemplo de esta dificultad la tenemos en Sharepoint cuando estamos desarrollndo Web Parts (básicamente es lo que mas se desarrolla y debe de desarrollarse en Sharepoint "Is the way that It is..") si no tenemos acceso o no es conveniente desarrollarlo en el servidor en que esta montado el MOSS 2007 o WSS 3.0 deberemos hacerlo remotamente y esto implica escribir el código del Web Part, compilarlo y hacer el "deployment", publicar en la galería del Web Parts para luego pegarlo a una página, aunque estos últimos dos pasos se hacen una sola vez lo anteriores consumen suficientemente tiempo para iniciar el despliegue de mensajes que nos indiquen la información que estamos desplegando o el error que estamos intentando descubrir.

Aunque parezca sencillo y simple las mejores prácticas de desarrollo estarán siempre para ayudarnos en la plataforma que desarrollemos y una forma efectiva de depurar y encontrar alguna falla en nuestro código es realizar la refactorización o refactoring de nuestro código, una de las reglas dice que demos de crear métodos con nombres que nos indiquen su propósito y que encapsulen precisamente dicha funcionalidad esto hará que como un árbol y sus armas empiece a partirse en pequeñas ramitas o partes nuestro código.

Un ejemplo de esto sería el siguiente:

En el evento load cargo toda la funcionalidad de lo que necesito cargar por ende el error que me despliega el compilador es que en el método load esta el error.. pero ojo es un montón de código que no se para que sirve y que precisamente funciona.

Bueno entonces decido colocar un método que me indica muy generalmente lo que hace el código como "ObtenerYLlenarControles", si hago el deployment de esto el error persistirá pero me indicará que el error ya no esta en load solamente sino que en el Método ObtenerYLlenarControles().

Luego reviso el código y me doy cuenta que esta la parte donde invoco la información de cierto tipo y la guardo en un objeto en memoria entonces decido encapsularlo en un método por ejemplo ObtenerListaDeTareas(). Hagó el deployment y el error me sigue indicando lo anterior y no menciona el método ObtenerListaDeTareas(). Aja! este parte el código que encapsule esta bien el error no se generó allí así que decido continuar revisando mi código y encuentro la parte donde despliego en algun control la información obtenida y decido encapsularlo en un método y le coloco el nombre LlenarControlTareasDelUsuario() y hago el deployment y huala! el error me muestra que el error esta en el método LlenarControlTareasDelUsuario() y si es lo suficientemente pequeño el código fácil de identificar encuentro el problema y lo corrijo sino sigo el proceso de encapsulamiento para reducir el área de falla hasta encontrarlo y por ende solucionarlo.

Al final no solo encontramos el problema y lo solucionamos sino que tenemos un código mas legible y la próxima vez que ocurra un error será más fácil encontrarlo porque tenemos segmentado nuestro código en pequeñas partes que nos permiten identificar rápidamente y claramente lo que hace y donde podría estar la falla de nuestro código.

Recuerda amigo lector Code4Fun!,

Manolo

No hay comentarios.: