DESARROLLADOR

Los generadores de código lo ayudan a entregar código de alta calidad rápidamente

mike gundeloi

Simplificado a su esencia, el trabajo de un desarrollador por contrato es muy simple: generar código de alta calidad que satisfaga las necesidades del cliente en el menor tiempo posible. Hay muchas herramientas que pueden ayudarte a conseguirlo. Por ejemplo, la gestión de requisitos, el seguimiento de errores, el control de fuentes y las herramientas de pruebas automatizadas tienen cabida en muchas oficinas.

Una herramienta útil que quizás no haya considerado es una herramienta de generación de código. En este artículo, le mostraré parte del contenido de esta categoría que está disponible para los desarrolladores que utilizan la plataforma Microsoft .NET. Según sus necesidades y su aplicación, es posible que pueda automatizar gran parte del código que está acostumbrado a escribir manualmente.

todo el mundo está haciendo
Permítanme disipar rápidamente la noción de que la generación de código está limitada a los desarrolladores sin experiencia o aquellos que no saben lo que están haciendo. De hecho, si está usando un IDE moderno, ya está usando herramientas de generación de código, aunque por lo general no están explícitamente marcadas de esta manera.

Por ejemplo, cuando agrega un nuevo Windows Form a una aplicación C#, Visual Studio .NET genera 69 líneas de código para que pueda manejar los conceptos básicos de hacer referencia a la biblioteca adecuada, declarar espacios de nombres, crear instancias y liberar el formulario. escriba el código equivalente a mano, pero ¿por qué querría hacerlo?

Visual Studio .NET tiene otros generadores de código más sigilosos. Por ejemplo, ¿qué sucede cuando agrega un DataSet escrito a una aplicación C# y luego arrastra una tabla al diseñador XSD? El IDE crea automáticamente una clase para usted en función de la información del diseñador.

Haga clic en el botón Mostrar todos los archivos en la barra de herramientas del Explorador de soluciones para ver la clase. Incluso para un conjunto de datos relativamente simple (por ejemplo, uno basado en la tabla de clientes de Northwind de muestra que se incluye con Microsoft Access), encontrará que VS.NET genera 650 líneas de código que no necesita escribir usted mismo.

Una de las ventajas del entorno .NET es que es fácil de automatizar. Hay muchas formas de conectar herramientas de generación de código adicionales en Visual Studio .NET y muchos proveedores aprovechan estos ganchos.

Es imposible para mí describir todas las herramientas de generación de código .NET en un artículo breve, pero puedo mostrarle algunas herramientas interesantes. Una forma de pensar en las herramientas de generación de código es en términos de la cantidad de código que generan. En este artículo, cubriré tres amplias categorías:

  • Generador de código simple para construir uno o varios objetos
  • Un generador de capa de acceso a datos que vincula su aplicación a una base de datos
  • Generador de aplicaciones para crear soluciones completas

Dependiendo de sus necesidades, cada uno de estos tipos puede tener un lugar en su caja de herramientas.

generador de código sencillo
Como ejemplo de un problema de este tipo que un generador de código puede ayudarlo a resolver, considere el requisito común de mantener una colección de instancias de clase. .NET Framework proporciona clases como System.Collections.HashTable y System.Collections.SortedList que facilitan mucho la creación de colecciones. Pero estas clases solo contienen objetos primitivos. Esto significa que si usa una lista ordenada para contener objetos de cliente, estará constantemente convirtiendo de cliente a objeto. Para empeorar las cosas, no hay forma de evitar el almacenamiento accidental de objetos de pedido en la lista de clientes.

Por supuesto, puede derivar su propia clase de la clase SortedList base, como CustomerSortedList, y anular todos sus métodos para que obtengan el objeto Customer explícitamente. ¿Pero por qué estás haciendo todo este trabajo?

Ingresar .NET CollectionGen de Chris SellsEste generador de código se implementa como una herramienta personalizada integrada con Visual Studio .NET, al igual que el diseñador integrado de DataSet. Después de instalar CollectionGen, todo lo que necesita hacer es definir sus requisitos en un archivo XML simple:




Lista Ordenada
cuerda
cliente
lista ordenada de clientes
mi colección

Establezca la propiedad de herramienta personalizada del archivo en SBCollectionGen, guarde su proyecto y obtendrá las clases requeridas. Por ejemplo, la clase generada implementará un método Contiene que toma una Cadena en lugar de un Objeto como clave:

la función anulable pública contiene (clave ByVal como cadena) como booleano
‘ Determinar si CustomerSortedList contiene una clave específica.

‘ ingresar:
‘ key = la clave para ubicar en CustomerSortedList.

volver(ÍndiceDeClave(clave) >= 0)
función final

Este es un patrón típico cuando se usan generadores de código. En lugar de escribir código, proporciona metadatos que definen el código que desea escribir (estas son las plantillas que debe usar, los tipos de datos de claves y elementos, y el nombre y el espacio de nombres de la colección). En función de estos metadatos, el generador de código crea el código por usted. En este caso, puedes escribir 10 líneas de metadatos a cambio de más de 1000 líneas de código.

CollectionGen se centra muy estrictamente en una sola tarea: crear colecciones con seguridad de tipos.Para una herramienta más flexible, echa un vistazo CodeSmith por Eric J. SmithCodeSmith utiliza su propia sintaxis para las plantillas (muy similar a la de las páginas ASP.NET). Aquí hay una pequeña parte de la plantilla que genera el procedimiento almacenado de SQL:

<%@ Property Name=”SourceTable” Type=”RedRiver.SchemaExplorer.TableSchema” Category=”Context” Description=”Table that the stored procedures should be based on.” %>
<%@ Property Name=”IncludeDrop” Type=”System.Boolean” Default=”True” Category=”Options” Description=”If true drop statements will be generated to drop existing stored procedures.” %>
<%@ Property Name=”IncludeInsert” Type=”System.Boolean” Default=”True” Category=”Options” Description=”If true insert statements will be generated.” %>

En tiempo de ejecución, CodeSmith traduce esta sintaxis en una interfaz de usuario, como se muestra en la figura. Figura ALuego complete cada propiedad especificada en el archivo de plantilla y haga clic en el botón Generar. CodeSmith usa la información que ingresa junto con el resto de la plantilla (que puede contener una lógica bastante compleja) para generar código. Aunque puede tomar un tiempo comprender cómo funciona realmente, CodeSmith termina siendo una herramienta de propósito general que puede generar código en cualquier idioma que se le ocurra.

Figura A
Los generadores de codigo lo ayudan a entregar codigo de

Creación de una capa de acceso a datos
Una gran cantidad de aplicaciones se basan en mover datos de la base de datos a la interfaz de usuario y viceversa. De hecho, parece razonable que la mayoría de las aplicaciones empresariales se centren en manipular bases de datos. Así que no sorprende que haya muchos productos que facilitan la conexión de la base de datos a la interfaz de usuario.

Un producto de esta categoría es ORM.NET de Olero SoftwareGenerados mediante la capa de acceso a datos, por lo general, los metadatos se seleccionan interactuando con la base de datos en lugar de ingresarlos manualmente. Figura B Demuestra ORM.NET en acción. Una vez conectado a la base de datos, puede usar la interfaz ORM.NET para investigar objetos en la base de datos y establecer propiedades para el código generado personalizado.

Figura B
1661109594 943 Los generadores de codigo lo ayudan a entregar codigo de

Después de configurar las opciones, todo lo que necesita hacer es hacer clic en el botón Generar capa de datos y especificar una carpeta para los archivos generados. ORM.NET crea una solución completa de Visual Studio .NET que incluye una biblioteca de clases para el acceso a datos y una aplicación de prueba. Puede usar la biblioteca de clases en cualquier otra aplicación para abstraer toda la base de datos como objetos como este:

Administrador de datos dm = nuevo Administrador de datos (Config.Dsn);
Cliente c = dm.NewCustomers(«Compañía DC», «DCCOM»);
c.Ciudad = «Endicott»;
c.Región = «Washington»;
dm.CommitAll();

El principal beneficio de un producto como ORM.NET es tomar un código complicado pero rutinario para acceder a los datos y ocultarlo. No necesita ser un experto en SQL o ADO.NET para usar las clases generadas para recuperar datos de la base de datos o agregarle nuevos datos. Todo lo que necesita hacer es comprender la interfaz que ORM.NET crea para usted.

Otros productos que se especializan en generar capas de acceso a datos incluyen olimús, desarrollador de nively LLBLGen.

Aplicación a un click de un botón
Si generar la capa de acceso a datos está bien, ¿cuánto mejor sería crear la aplicación completa sin escribir ningún código? Puede averiguarlo utilizando generadores de aplicaciones, que suelen ser los productos de generación de código más complejos (y caros).

P.ej, Figura C Se muestra una parte del creador de aplicaciones. CodeCharge Estudio 2.0.CodeCharge es su creador de aplicaciones típico, elige su conexión de base de datos, elige las tablas que le interesan, decide qué formularios crear para cada tabla y elige un tema visual. Luego, la herramienta genera todo lo necesario para formar una aplicación ASP.NET completa (CodeCharge también puede apuntar a otras plataformas, como Cold Fusion).

Figura C
1661109594 444 Los generadores de codigo lo ayudan a entregar codigo de

CodeCharge Studio va más allá de otros generadores de aplicaciones al proporcionar su propio IDE que le permite editar más el código de su aplicación después de crearla. Cuando esté satisfecho con los resultados, publique el proyecto en su servidor web y CodeCharge crea todas las páginas y archivos de clase necesarios.

Otras herramientas en esta categoría incluyen De Claret y transmisor de datos.

Entonces, ¿es adecuado para ti?
Si considera la gama completa de herramientas de generación de código, existe una clara compensación entre la cantidad de código que la herramienta escribe para usted y la generalidad del código. En un extremo, tiene generadores de código simples que automatizan cosas tediosas como colecciones. Puede usar una herramienta como CodeSmith para automatizar casi cualquier tarea de programación repetitiva, pero deberá combinar las clases en una aplicación usted mismo.

En el otro extremo del espectro se encuentran herramientas como CodeCharge Studio, que son excelentes para crear aplicaciones de línea de negocios típicas que llevan una base de datos a una interfaz de usuario web, pero no ofrecen la flexibilidad de un lenguaje de programación de propósito general. Cuanto más código genere esta herramienta, más necesitará para asegurarse de que el resultado final es el que desea.

Algunos desarrolladores parecen estar sesgados en contra de todas las herramientas de generación de código, insistiendo en que pueden escribir mejor código a mano. Si bien esto puede ser cierto, debe tener mucho cuidado con la forma en que define «mejor». Recuerde, nuestro objetivo es llevar las aplicaciones operativas a sus clientes lo más rápido posible. En términos generales, no hay ningún beneficio en proporcionar un código fuente elegante o un código fuente que se ejecute en el menor espacio posible o un código fuente perfectamente optimizado.

Excepto en algunas áreas limitadas de la programación (como el desarrollo de dispositivos integrados), a menudo es mejor enviar un código ligeramente subóptimo hoy que esperar el código perfecto mañana. Elegir el generador de código correcto puede ayudarlo a lograr ese objetivo.

LEER  Informe: La tecnología low-code es el futuro de las empresas y los emprendedores

Deja una respuesta

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

Botón volver arriba