11.000 líneas de código en 41 segundos
Sigo con las automatizaciones de código para mi aplicación AIDBDeveloper. Esta vez he sido bastante más ambicioso y me he propuesto generar todas las clases necesarias para implementar el editor de este mismo blog como una librería de clases integrada dentro de la plataforma.
En el artículo anterior, hice una primera aproximación bastante simple: automatizar la localización de recursos para un control o formulario. Poco más que modificar unos archivos XML de recursos y un par de clases para declarar sus nombres.
En este nuevo artículo voy a mostrar una automatización combinada. Por un lado, el clásico proyecto VSIX para generar un proyecto en Visual Studio con una configuración a medida. Por otro, partiendo de las tablas de la base de datos de configuración de este blog, voy a generar 29 clases —una por tabla—, otra clase para el repositorio, una clase base para todas las tablas, una interfaz para las tablas, y otra para el repositorio.
Otras dos interfaces servirán para integrar el repositorio en la solución: una para implementar en el componente proveedor, y otra para los componentes cliente.
Tendré que modificar también la clase estándar que utilizo para que estas librerías de clases se integren dentro de la solución, exportando los objetos que deben estar accesibles bajo demanda, sin necesidad de conocer su tipo de antemano.
Y, por supuesto, también tendré que añadir recursos de texto localizados para todo ello, como en el artículo anterior.
¿Y qué va a hacer la inteligencia artificial en esta ocasión? Pues básicamente lo mismo que en el caso anterior: generar estos recursos de texto. Textos en inglés y en español para las categorías, nombres y descripciones usadas en la edición de los objetos en la interfaz de usuario.
Estos textos irán a un archivo JSON dentro del proyecto, de manera que, aunque tenga que repetir el proceso cien veces, solo tenga que usar IA en la primera.
Pero la cosa no acaba aquí. Tengo estandarizada la forma de actualizar los objetos de cualquier repositorio de base de datos. Lo hago siempre a través de procedimientos almacenados, para delegar las complicaciones del SQL en la base de datos. De este modo, aunque sean necesarias varias operaciones, todas se realizan dentro de una sola llamada.
Esto quiere decir que también tendré que generar 29 procedimientos almacenados, MySQL en este caso, para actualizar cada una de las tablas.
Todo esto, por cierto, tarda 41 segundos en generarse, cuando participa la IA. Sin ella, tarda menos de un segundo, así que hacer correcciones y modificaciones es pan comido una vez que tienes el archivo JSON con los recursos.
Mostraré además otro tipo de automatización. No toda automatización consiste en escribir código. En mis aplicaciones .NET suelo utilizar mucho los atributos como metadatos sobre los tipos para guiar operaciones.
Por ejemplo, puedo definir la configuración por defecto de cada columna de un DataGridView decorando las propiedades que representan las columnas. Puedo indicar qué propiedades representan claves primarias, si son claves autogeneradas, cuales son claves foráneas y qué tipo de join debe utilizarse para enlazar con la tabla referenciada.
No os voy a aburrir con explicaciones soporíferas e interminables sobre el código, aunque mostraré algunos detalles en el vídeo que acompaña este artículo. Espero ir mejorando el método que utilizo para comentar código, y cualquier comentario o sugerencia al respecto será bienvenido.
Así que, sin más explicaciones, os dejo con el vídeo. Ya me contaréis.









