Es ist bekannt, dass es für einen Programmierer sehr gut ist, faul zu sein , denn mit weniger mehr zu erreichen, ist der Schlüssel zum Fortschritt . Niemand mag es, immer und immer wieder dasselbe zu tun. Das ist anstrengend, langweilig und überhaupt nicht kreativ. Wenn wir dieselbe Aktion wiederholen, machen wir oft Fehler, aber zum Glück gibt es diejenigen, die wirklich gut und effektiv sind, um ähnliche Aufgaben auszuführen. Und das sind COMPUTER !

Heutzutage ist die Codegenerierung die Fähigkeit, die Arbeit in kürzester Zeit zu erledigen . Die Grundidee ist einfach: Finden Sie ein Muster in denselben und langwierigen Teilen des Codes, die Sie immer wieder schreiben müssen, erstellen Sie ein Werkzeug zur Generierung, führen Sie es aus und sehen Sie, wie die Magie geschieht!
In der Welt der Android-Entwicklung sind solche Tools jedem Entwickler bekannt. Dies ist Nachrüstung und Dolch und Raum. Was ist mit Dart? Und nicht weniger wichtige Frage: Was brauchen wir, um unsere eigenen Tools für die Codegenerierung zu erstellen?
Dart- und Codegenerierung: erschwingliche Tools
Um ein Tool zur Codegenerierung zu erstellen, benötigen wir die folgenden zwei Pakete:
source_gen
Dieses Paket bietet eine praktische API zum Generieren von Code. Dies ist eine Abstraktion einiger Low-Level-Dart-Pakete wie Analyzer und Build . Obwohl die Verwendung dieses Pakets optional ist, können Sie sich vor vielen Schwierigkeiten schützen.
source_gen bietet zwei abstrakte Generatorklassen, die dem Besuchermuster folgen:
Generator
: Wenn Sie diese Klasse erben, wird jedes Element Ihres Codes besucht. Somit haben Sie die volle Kontrolle darüber, was mit jedem besuchten Knoten oder Element zu tun ist.GeneratorForAnnotation
: Diese Klasse ähnelt einem einfachen Generator, aber wenn Sie diese Klasse erben, geben Sie auch "Annotation" an. Daher werden nur Knoten besucht, die mit dieser Anmerkung versehen sind. Der Rest des Codes wird ignoriert.
Sie müssen auch den Builder
konfigurieren, der den Generator umhüllt. Es gibt drei Möglichkeiten:
- Wenn Sie einen
partial
des Codes schreiben möchten, sollten Sie SharedPartBuilder
wählen. Mit "part" können Sie die Bibliothek in mehrere Dart-Dateien aufteilen. SharedPartBuilder
erstellt eine Datei mit der Erweiterung .g.dart
. - Sie können
PartBuilder
auch verwenden, wenn Sie den "part" -Ansatz verwenden möchten, aber mehr Kontrolle über die Erweiterung der generierten Datei benötigen, z. B. .my_file.dart
. - Wenn Sie eine eigenständige Bibliothek schreiben möchten, die importiert werden kann, verwenden Sie
LibraryBuilder
.
build_runner
Mit diesem Tool können Sie den Generator in der Entwicklungsphase ausführen. Es kann über die Befehlszeile aufgerufen werden:
pub run build_runner <command>
Anstelle von <command>
kann sein:
build
: Startet die Generierung einmal.watch
: Startet einen Daemon, der Änderungen in Dateien verfolgt und bei Bedarf mit der Generierung beginnt.serve
: Ähnlich wie Watch, aber es startet wie ein Entwicklungsserver.test
: Startet die Generierung einmal, erstellt ein freigegebenes Ausgabeverzeichnis und führt dann den pub run test --precompiled <merged-output-dir>
.
Damit source_gen
funktioniert, müssen Sie auch eine buil.yaml
Datei erstellen, die die Details der Konfiguration des Codegenerators angibt.
Verwenden der Codegenerierung in Dart
Die Codegenerierung wird in vielen bekannten Bibliotheken für Dart verwendet:
Mehr ...
Der zweite Teil zeigt, wie Sie mithilfe von Anmerkungen und Codegenerierung alle TODO
in der Anwendung TODO
.