Die Wiedervorlage steht viermal in kladde-stile: in Schichten, in Clean Architecture, hexagonal mit einem zweiten Eingang und als Vertical
Slices. Jede Fassung hat dieselbe Änderung bekommen, und jede ist mit demselben Werkzeug und denselben git-Befehlen gemessen. Diese Lektion
legt die vier Spalten nebeneinander, zeigt für jeden Stil einen Architekturtest, der ihn im Build hält, und führt zu der Entscheidung, um die
es in Modul 4.10 von Anfang an ging: nach welchem Stil die Kladde weiter gebaut wird.
Die Kladde bekommt aus dem ganzen Modul nur zwei Dinge: ein ADR mit dem Messvergleich und erweiterte Architekturtests. Beides entsteht in den Übungen. Die Vorlage für das ADR kennen Sie aus Lektion 4.1.3, den Architekturtest aus Lektion 4.3.6.
Die vier Messbögen nebeneinander
Alle Zahlen stammen aus tools/messen.cs und git diff --stat an den Tags <x>-vorher und <x>-nachher, so wie sie die Lektionen 4.10.2 bis
4.10.5 gemessen haben:
| Messpunkt | A Schichten | B Clean | C Hexagonal | D Slices |
|---|---|---|---|---|
| Projekte, Projektverweise (Produktion) | 3, 2 | 4, 4 | 4, 5 | 1, 0 |
| Zeilen Produktion, vorher → nachher | 179 → 194 | 243 → 255 | 205 → 217 | 164 → 175 |
| Dateien, Typen Produktion | 11, 16 | 15, 22 | 10, 15 | 9, 15 |
| Zeilen Tests, vorher → nachher | 184 → 221 | 205 → 246 | 201 → 242 | 152 → 184 |
| Typen nur zum Abbilden | 5 | 6 | 4 | 5 |
| „wöchentlich“: Dateien Produktion (+/−) | 4 (27/9) | 5 (33/17) | 3 (31/15) | 4 (26/11) |
| „wöchentlich“: Dateien Tests (+/−) | 2 (57/11) | 3 (65/13) | 3 (65/13) | 2 (50/10) |
| Wo die Regel steht | FollowUpService.CompleteAsync |
FollowUp.Complete |
FollowUp.Complete |
FollowUp.Complete |
| Billigster Test der Regel | mit Datenbank | ohne Host und Datenbank | ohne Host und Datenbank | ohne Host und Datenbank |
| Was der Kern kennt | FollowUps.Data, EF Core mit SQLite |
nichts | nichts | der Ordner nichts, sein Projekt EF Core und ASP.NET Core |
Dazu kommen zwei Messungen, die nur in einer Fassung vorkamen. Der zweite treibende Adapter in Fassung C hat 10 Dateien mit 236 Zeilen ergänzt und keine Datei der Mitte geändert. Und die Tests der Regel liefen in einzelnen Läufen unterschiedlich lange: Fassung A brauchte für ihre Tests mit SQLite knapp 4 Sekunden, B und C für die Tests des Modells gut 1,4 Sekunden, D gut 2 Sekunden, weil das Testprojekt das Webprojekt mitbaut. Zeiten schwanken von Lauf zu Lauf; die Reihenfolge blieb dieselbe.