Se sabe que es muy bueno para un programador ser flojo , porque hacer más con menos es la clave para progresar . A nadie le gusta hacer lo mismo una y otra vez. Esto es agotador, aburrido y nada creativo. Al repetir la misma acción, a menudo cometemos errores, pero, afortunadamente, hay quienes son realmente buenos y efectivos para realizar tareas similares. ¡Y estos son COMPUTADORAS !

Hoy, la generación de código es la capacidad de hacer el trabajo en el menor tiempo posible . La idea básica es simple: encontrar un patrón en las mismas y tediosas secciones de código que deben escribirse una y otra vez, crear una herramienta para la generación, ejecutarla y ver cómo sucede la magia.
En el mundo del desarrollo de Android, tales herramientas son bien conocidas por todos los desarrolladores. Esto es Retrofit, y Dagger, y Room. ¿Qué hay de Dart? Y una pregunta no menos importante: ¿qué necesitamos para crear nuestras propias herramientas para la generación de código?
Dart y generación de código: herramientas asequibles
Para crear una herramienta para la generación de código, necesitamos los siguientes dos paquetes:
fuente_gen
Este paquete proporciona una API conveniente para generar código. Esta es una abstracción de algunos paquetes Dart de bajo nivel, como el analizador y la compilación . Aunque el uso de este paquete es opcional, puede salvarlo de muchas dificultades.
source_gen proporciona dos clases generadoras abstractas que siguen el patrón Visitor :
Generator
: al heredar esta clase, se visitarán todos los elementos de su código. Por lo tanto, tiene control total sobre qué hacer con cada nodo o elemento visitado.GeneratorForAnnotation
: esta clase es similar a un generador simple, pero cuando hereda esta clase, también especifica "anotación". Por lo tanto, solo se visitarán los nodos que estén anotados con esta anotación. El resto del código será ignorado.
También debe configurar el generador, que será un contenedor sobre el generador. Hay tres opciones:
- Si desea escribir una parte
partial
del código, debe elegir SharedPartBuilder
. "parte" le permite dividir la biblioteca en varios archivos Dart. SharedPartBuilder
crea un archivo con la extensión .g.dart
. - También puede usar
PartBuilder
si desea usar el enfoque de "parte", pero necesita más control sobre la extensión del archivo generado, por ejemplo .my_file.dart
. - Si desea escribir una biblioteca independiente que se pueda importar, use
LibraryBuilder
.
build_runner
Esta herramienta le permite ejecutar el generador en la etapa de desarrollo. Se puede llamar desde la línea de comando:
pub run build_runner <command>
En lugar de <command>
puede ser:
build
: comienza la generación una vez.watch
: lanza un demonio que rastrea los cambios en los archivos y comienza la generación cuando es necesario.serve
: similar a mirar, pero comienza igual que un servidor de desarrollo.test
: comienza la generación una vez, crea un directorio de salida compartido y luego ejecuta la pub run test --precompiled <merged-output-dir>
.
Para que source_gen
funcione, también debe crear un archivo buil.yaml
, que indica los detalles de la configuración del generador de código.
Usando Generación de Código en Dart
La generación de código se usa en muchas bibliotecas conocidas para Dart:
Más ...
La segunda parte mostrará cómo usar las anotaciones y la generación de código para rastrear todos los TODO
en la aplicación.