Wie löst ihr beim refactoring zustandswechsel, ohne den überblick zu verlieren?
#1
Ich stecke gerade in einem kleinen Refactoring fest und frage mich, wie andere damit umgehen. In meinem aktuellen Projekt habe ich eine Methode, die ursprünglich nur eine einfache Validierung machte, aber über die Zeit ist sie zu einer Art zentraler Knotenpunkt geworden, der fast ein Dutzend verschiedene Aufgaben koordiniert. Es fühlt sich falsch an, sie so zu lassen, aber wenn ich sie aufteile, verliere ich irgendwie den Überblick über den Ablauf. Besonders der Teil, der die Zustandsübergänge verwaltet, macht mir Kopfzerbrechen. Wie habt ihr so etwas in eurem Code schon mal gelöst?
Zitieren
#2
Es klingt, als hättest du eine einfache Validierung in einen Meta Prozess verwandelt. Vielleicht hilft es, die Sache so zu entkoppeln dass man sieht welche Zustandsübergänge wirklich nötig sind. Stell dir eine kleine Zustandsmaschine vor mit States Init Validating Ready Error Completed und Events wie validateOk validateFail startNext retry. Die Idee erst eine klare Übersicht zu schreiben dann die zentrale Methode in moderne Bausteine zu zerlegen. Wenn du das dokumentierst behältst du den Fluss im Kopf. Wärst du bereit eine zustandsbasierte Sicht zu testen
Zitieren
#3
Analytisch gesehen ist SRP oft der richtige Weg. Extrahiere alles was nur validiert in eine eigene Komponente. Dann nimm den Teil raus der den Ablauf koordiniert und modellier die Zustandsübergänge explizit als eine State Machine oder als Checkout Workflow. Dazu reichen oft drei Dinge eine klare Zustandsbeschreibung Guards für Transitionen und ein Dispatcher der Events weiterleitet. Wenn du das schematisch machst merkst du schneller wo das Korsett zu eng wird
Zitieren
#4
Ich hab das mal als Pipeline missverstanden und dann kam einer mit der Warnung dass ich den Code nicht monolithisch kleben lassen soll. Vielleicht ist das hier ähnlich der Eindruck Der Code kocht in einem Zyklus aus Validierung Entscheidung Aktionen Logging. Was ich gemacht habe die Befehle in eine Liste gepackt und der Kontrollfluss wurde sequentieller statt monolithisch. Aber ist das wirklich eine reine State Machine oder eher eine Folge von Checks?
Zitieren
#5
Vielleicht Neuanfang Modelle eine externe State Machine oder verwende eine einfache Workflow Engine und definiere Transitionen Fallbacks und Nebenwirkungen Dann dokumentierst du die Übergänge in Tests damit der Fluss sichtbar bleibt und die Zustände gut erkennst Was hältst du davon die Komponente so zu belasten dass du erst den Ablauf zuverlässig gibst?
Zitieren


[-]
Schnellantwort
Nachricht
Geben Sie hier Ihre Antwort zum Beitrag ein.

Bestätigung
Bitte den Code im Bild in das Feld eingeben. Dies ist nötig, um automatisierte Spambots zu stoppen.
Bestätigung
(Keine Beachtung von Groß- und Kleinschreibung)

Gehe zu: