Archive for the ‘Herramientas para Visual Studio’ Category

Comentarios XML con GhostDoc en C#

Ya sé, no tienen que decírmelo, hacer comentarios en el código aburre y ni que hablar de los comentarios XML donde uno tiene que estar recordando las etiquetas necesarias lo cual nos hace perder tiempo y productividad a la hora de programar (Excelente excusa, espero que me lo crea mi jefa).

El único problema es que existen herramientas para asistirnos en la laboriosa tarea de escribir nuestros amados comentarios XML, sí esos que hay que comenzar con “/// “. Una de esas herramientas se denomina como ya habrán adivinado GhostDoc, la existencia de este tipo de herramientas tira por los suelos nuestras mejores excusas para no escribir comentarios.

Bueno ahora que no tenemos más excusas nos vemos obligados a ver cuál es la funcionalidad de esta herramienta.

GhostDoc
 GhostDoc es un plug-in compatible tanto con Visual Studio 2005  y Visual Studio 2008 creado por Roland Weigelt, cuya utilidad es (Obligarnos a escribir comentarios), automatizar la escritura de comentarios XML, generando toda la estructura del comentario, lo único que tenemos que hacer es modificar el texto que necesitemos para que todo esté más entendible, gracias a este plug-in nos ahorramos de escribir una cantidad impresionantes de texto y podemos realizar los comentarios XML muy rápido; repito ahora ya no hay excusas.

¿Cómo Funciona?
La mejor manera para comprender su funcionamiento es con un pequeño ejemplo, donde mostraremos su utilidad. Asumamos que estamos escribiendo un sistema altamente complejo donde tenemos que implementar la clase calculadora de la siguiente manera:

ClaseCalculadora

Como verán es una clase muy compleja y por lo tanto casi imposible de usar si es que no se tiene la documentación de:

  • ¿Para qué sirve la clase?
  • ¿Para qué sirve cada método?
  • ¿Que representa cada parámetro?

Para proceder con nuestra tarea de documentación asistida tenemos que realizar los siguientes pasos:

  1. Descargar la versión que corresponda de GhostDoc de la siguiente dirección: Roland Weigelt’s  GhostDoc. Luego procedemos a instalarlo dejando los valores por defecto.
  2. Al iniciar Visual Studio se nos pedirá que seleccionemos algunas opciones como combinación de teclas para acceso directo, donde también pueden dejar los valores por defecto, para verificar que esté instalado el plug-in, revisar en el menú principal la opción “Tools”, bajo la que ahora debería estar GhostDoc.
  3. Ya tenemos todo listo así que nos queda comenzar a generar los comentarios XML, en primer lugar comentaremos la clase, para lo cual pulsamos clic derecho sobre el nombre de la clase y en el menú contextual seleccionamos: “Document this” (también podemos utilizar la combinación de teclas de acceso rápido, si es que dejaron los valores por defecto serán: ctrl + shift + D) 

    MenuContextual

    Esto genera la estructura del comentario completa incluida las etiquetas de resumen, poniendo el cursor en posición para escribir la descripción de la clase:

    ComentarioClaseGenerado

    A continuación solo nos queda escribir la descripción de la clase:

    ComentarioClaseEscrito

  4. Ahora nos toca generar los comentarios XML para los métodos, el proceso es el mismo, pulsamos clic derecho sobre el nombre del método y del menú contextual seleccionamos: “Document this”, lo cual genera toda la estructura necesaria para la descripción del método los parámetros de entrada y la salida del método, como se muestra en la siguiente figura:

    ComentarioMetodoGenerado

    Ahora solo nos queda escribir la descripción del método, los parámetros y el valor de salida, repetimos el procedimiento para todos los métodos.

     ComentarioMetodoEscrito

  5. Ahora ya tenemos nuestra clase completamente comentada, cabe aclarar que en este caso solo utilizamos comentarios para la clase y para métodos, pero también se pueden generar comentarios para otros miembros de clases como propiedades y eventos. GhostDoc también tiene numerosas opciones de configuración avanzadas, para las cuales tendrán que profundizar más en el estudio de esta herramienta.

¿Y para qué sirven esos comentarios XML?
Ahora ya tenemos nuestra clase completamente comentada, y ¿para qué nos sirve esto?, pues si pensamos en lo más inmediato, sirve para que las personas que revisen el código de la clase “Calculadora”  puedan guiarse por estos comentarios y entender la funcionalidad de los miembros de la clase, esta no es su única utilidad, también sirve para que los usuarios de nuestra clase “Calculadora” sepan cómo utilizar los miembros públicos de la clase, los comentarios XML que escribimos se presentarán como ayudas de IntelliSense al momento de escribir el código como se muestra en las siguientes figuras:

 IntelliSenseMetodo

 IntelliSenseParametros

La utilidad de los comentarios XML no termina aquí, en el siguiente artículo veremos cómo generar los archivos de ayuda a partir de estos comentarios XML.
Espero que esta excelente herramienta los motive a escribir más comentarios XML.

Enlaces
Página Oficial de GhostDoc: Roland Weigelt’s  GhostDoc

Anuncios

Capa de Datos Automágicamente Generada con NetTiers y CodeSmith

Como es costumbre en nosotros los desarrolladores, siempre estamos en busca de nuevas formas de escribir menos código, ¿será para mostrar lo listos que somos?, o simplemente porque somos muy flojos.

Sea como sea, la primera librería que utilicé para agilizar la escritura de la capa de datos de mis aplicaciones fue el Data Access Application Blocks, que ahora forma parte de la Enterprise Library, es cierto que esta librería ayuda a la hora de crear la conexión con la base de datos y ejecutar los procedimientos almacenados, pero aún hay mucho código que escribir.

Entonces decidí buscar una nueva alternativa, algo más completo, mi búsqueda por la web me llevó a un nuevo concepto para mi, ORM (Object Relational Mapping), mapeo del modelo orientado a objetos en que programamos al modelo relacional de base de datos, este mapeo es necesario porque como sabemos existe una brecha entre estos dos modelos y hasta que no se desarrollen completamente las bases de datos orientadas a objetos, tendremos que estar saltando esta brecha cada vez que tengamos que persistir un objeto en una base de datos relacional (Sql Server, Oracle, MySql, etc.)

Para lidiar con el problema de estar escribiendo cada vez el código necesario para persistir nuestros objetos, surgen numerosas librerías que nos ayudan a automatizar esta tarea, a continuación enumero algunas:

eXpress Persistent Objects for .NET.- de Developer Express, es uno de los primeros ORM que revisé, es bastante simple de utilizar, a grandes rasgos lo que tenemos que hacer es crear nuestra clase, por ejemplo en C# con sus respectivos campos, luego para que esta clase se pueda persistir tenemos que hacer que herede de la clase XPObject, adicionalmente si queremos hacer asociaciones y cambiar los nombres con que se guardaran las tablas o campos en la base de datos tendremos que utilizar atributos, después de crear nuestras clases, si la base de datos aun no existe se creará automáticamente y podremos persistir nuestras clases en ella. Esta librería soporta la mayoría de las bases de datos conocidas, así que cambiar de gestor de base de datos no representa ningún problema, una desventaja es que esta librería es de pago.

NHibernate for .NET.- Es la versión para .Net del conocido Hibernate para Java, aunque no esta tan desarrollado como su hermano mayor de Java, es una buena alternativa; para persistir las clases no necesita que nuestra clase herede de una clase base como en el caso anterior, lo que necesitamos en este caso es un archivo en formato xml donde indicaremos el mapeo de los campos de la clase con la base de datos, soporta lenguaje de consultas orientado a objetos, además de la mayoría de bases de datos conocidas, y para cambiar de gestor de base de datos en nuestro proyecto solo basta cambiar una línea en un archivo de configuración, en la versión actual todavía no soporta procedimientos almacenados razón por la cual no lo utilizo en mis proyectos, en la siguiente versión ya traerá soporte para procedimientos almacenados. Esta librería es open source, así que pueden utilizarla sin costo alguno.

Cooperator Framework.- Es un framework relativamente nuevo, no he tenido oportunidad de probarlo pero promete bastante, esta hecho por un grupo de desarrolladores argentinos, así que no es mala idea echarle un vistazo.

.netTiers.- .netTiers en realidad es una plantilla para CodeSmith, y CodeSmith es un generador de código que funciona basado en plantillas, uno escribe una plantilla en un lenguaje que tiene sintaxis similar al ASP .Net y luego puede general código para cualquier lenguaje basado en el texto de la plantilla.

Entonces .netTiers es una enorme plantilla que funciona en CodeSmith, se conecta con la base de datos que le indiquemos y comienza a generar todos los procedimientos almacenados que necesitaremos es decir (Insert, Update, Delete y consultas) para cada una de las tablas de nuestra base de datos, luego genera todas las clases correspondientes a las tablas que tenemos en la base de datos, así como los métodos que se corresponden con los procedimientos almacenados, y lo coloca todo en diferentes proyectos que conformarán la capa de datos. Obviamente habrá alguna funcionalidad específica de nuestra aplicación que no se puede generar automáticamente , para lo cual tendremos que escribir el procedimiento almacenado nosotros mismos con una nomenclatura especial, para estos procedimientos también se generaran los respectivos métodos en las clases correspondientes.

De esta manera no tendremos que preocuparnos por hacer consultas Sql, únicamente tendremos que llamar a los métodos necesarios con los parámetros requeridos.

La ventaja de esto es que el código se genera una sola vez, por lo que se gana en velocidad de ejecución, puesto que todo es compilado antes de su distribución.

La desventaja es que por el momento solo funciona con Sql Server, además que la plantilla es de uso libre pero el generador CodeSmith es de pago.

Yo utilizo el .netTiers en mis proyectos porque lo considero una buena opción está en medio camino entre hacer todo a mano y utilizar un ORM que genera todo en tiempo de ejecución como el NHibernate.

¿Que Suit de Componentes para .Net Debo Utilizar?

Llega un momento en la vida de todo desarrollador en que se ve con la necesidad de utilizar componentes de terceros, generalmente porque los componentes que nos brinda Visual Studio no son suficientes, es cierto que con la versión 2005 de Visual Studio se incrementaron enormemente la cantidad de componentes, pero aun así definitivamente los componentes de terceros nos ofrecen mayores ventajas.

¿Para que me sirve una suit de componentes en mi trabajo profesional? Nos sirve de mucho, porque nos ahorra el escribir miles de líneas de código para hacer tareas comunes, y eso sin hablar de los Application Frameworks, que será un tema para otro articulo; como bono adicional las suit de componentes desarrollados por terceras empresas nos ofrecen una interfaz de usuario mucho mas profesional, de modo que podemos hacer que nuestros sistemas luzcan como los que hacen las grandes empresas (Office, Outlook, etc.) sin mucho esfuerzo.

Y que suit de componentes debemos utilizar, yo no les voy a decir cual, en realidad hay muchas suits que podemos utilizar y yo no las conozco todas, ni mucho menos las he probado todas, solo les comentare algunas suits que he podido probar y cual es la que mas me gusta, no necesariamente es la que ustedes deberían utilizar pero seria bueno que prueben unas cuantas antes de decidirse cual les conviene más, todas tienen versiones de demostración completamente funcionales que pueden descargar desde su Web.

Developer Express.- Una suit realmente completa, en especial el grid que posee, es muy bueno y versátil, una de los cosas que más me gustan de esta suit es la apariencia visual que tiene, ya trae skins prediseñados y podemos cambiar la apariencia de todo nuestro sistema con una sola instrucción, además viene con editor de skins para crear los que queramos, unas de las cosas que no me gusta es que los componentes para Webforms son un poco lentos, pero en fin nada es perfecto y esta es la suit que utilizo yo, pueden descargar una versión de demostración desde aquí (ya tiene Ribbon, menús estilo office 2007).

Componet One.- Esta suit es una de las mas completas que he visto, tiene infinidad de componentes tanto para Winforms, WebForms, y dispositivos móviles, algo que no me gusta de esta suit es que no tienen una apariencia muy llamativa, tiene muchas funcionalidades pero es difícil lograr una interfaz de usuario espectacular. Durante un proyecto que realice hace poco tuve un problema con el grid de Developer Express, que como mencione antes es muy versátil, pero sucede que no se pueden realizar combinaciones de celdas que están en diferentes columnas, solamente soporta combinación de celdas en la misma columna, y como yo necesitaba esa funcionalidad tuve que utilizar el grid de Component One, que si soporta eso y más, lástima que sea tan difícil hacer que este grid se vea bonito, pueden descargar una versión de demostración desde aquí.

Telerik.- A decir verdad no probé mucho esta suit, me parece que es una de las mejores para WebForms, hace poco liberaron sus componentes para WinForms y según dice en la Web ya soporta la interfaz estilo Vista, pueden descargar una versión de demostración desde aquí (ya tiene Ribbon, menús estilo office 2007).

NetAdvantage.- De Infragistics, me parece que es una de las mas conocidas, pero tampoco lo probé a fondo, al igual que Developer Express, también tiene temas para cambiar la apariencia de la interfaz de usuario, pero no me convence mucho, no son tan bonitos como los de Developer Express, pueden descargar una versión de demostración desde aquí (ya tiene Ribbon, menús estilo office 2007).

Estas suits son las que conozco, si conocen otras pueden ponerlas en los comentarios, todas estas suits son de pago, no conozco ninguna suit open source, así que si conocen no duden en ponerla.

ReSharper una Herramienta de Productividad Adictiva para C#

Cuando tuve la oportunidad de ver las primeras presentaciones de Visual Studio 2005, me quede impresionado por las mejoras que Microsoft hizo en su herramienta de programación, especialmente lo referido a Refactoring, y los avances que tenia en IntelliSense y Code Snippets, no veía la hora te tenerlo en mis manos y poder probar el nuevo juguete.

Hasta que al fin llego el día de probar el nuevo Visual Studio 2005, pude utilizar las nuevas características en un nuevo proyecto que se me presento, en el cual corroboré que realmente estos cambios ayudaban enormemente en la productividad a la hora de escribir código.

Ya estaba feliz con mi nuevo juguete, pero por accidente (como suelen suceder las cosas buenas), encontré navegando en la web una herramienta denominada ReSharper for Visual Studio, de la empresa JetBrains, inmediatamente me despierta la curiosidad y comienzo a investigar para que sirve esta herramienta, lo primero que encuentro es que una de sus funciones es para hacer refactoring en C#, lo cual no me parecía muy interesante debido a que el nuevo juguete ya tiene refactoring de serie, pero solo por curiosidad decidí descargar la versión de demostración de aquí y probarlo, lo primero que hago es revisar la ayuda que trae, la cual es muy concreta y útil, y comienzo a revisarlo, se instala como un Add-in para Visual Studio, y te crea un nuevo menú dentro de Visual Studio. Te desactiva por defecto el IntelliSense de visual Studio y pone el suyo.

Cuando probé las características que tenía, no lo podía creer, yo que pensé que ya era bastante bueno el IntelliSense y Refactoring de Visual Studio, esto lo superaba por mucho, un pequeño resumen de sus características:

•Puede Resaltar los errores en el editor de código, ya se esto lo hace Visual Studio solo, pero además nos ofrece accesos directos para poder corregirlos rápidamente.
•Además de resaltar errores puede resaltar advertencias, que pueden ser configurados para seguir las buenas prácticas de programación.
•Tiene muchas más opciones de refactoring que Visual Studio, listos para ser utilizados.
•Tiene excelentes características de navegación y búsqueda dentro de nuestro código, por ejemplo podemos resaltar todas las ocurrencias de una variable en nuestro código, lo resalta con un color diferente fácil de ver.
•El IntelliSense es mucho mas inteligente que el de Visual Studio, porque te brinda mas información, por poner un ejemplo cuando uno digita comillas de apertura las de cierre se ponen automáticamente, igual sucede con las llaves paréntesis y cualquier carácter que se use como apertura y cierre, algo que personalmente me gusta mucho es que cuando pones el cursor en una llave de cierre por ejemplo, te resalta en la parte superior cual es la llave de apertura y de que instrucción es, esto lo hace aunque la llave de apertura este muy lejos y ya no se vea en el editor de código, en fin es una maravilla.
•Puede formatear código automáticamente, poner los saltos de línea en las instrucciones largas, etc.
•Puede ejecutar las pruebas de unidad de NUnit directamente desde el IDE.
•Y muchas otras cosas más, ya parezco de Jetbrains.

Esta herramienta solo funciona por el momento para C#, pero si eres como yo un amante del C# no dejes de probar esta herramienta, el único inconveniente es que como dice el titulo del post es adictivo, muy adictivo diría yo, una vez que lo pruebas no lo puedes dejar más. La herramienta no es Open Source así que hay que pagar por él, pero me parece que vale la pena.