Lassen Sie uns sagen, dass wir da draußen eine Web-App haben, dass ein Benutzer ein Formular ausfüllen haben soll, und dann schafft es ein Ticket im Backend-Workflow-Engine. Dieses Formular wird weiterhin das Portal für den Kunden sein, um zu sehen, was vor sich geht. Einige Formulare gehen direkt zur Ticket-Erstellung; Andere müssen von jemand anderem genehmigt werden, bevor sie ein Ticket erstellen, und sie können auch abgelehnt werden. Das Ding sendet E-Mails verfolgt Antworten auf die Fragen der Form, verfolgt alle hochgeladenen Anhänge und protokolliert auch „Updates“, wie verschiedene Aktionen, die den Zustand der Form gemacht zu ändern.Refactoring Spaß: Umgang mit komplizierten Zustand
Die Business-Logik zu entscheiden, was zu tun, wenn das Formular zuerst vorgelegt wird oder gespeichert Start behaarten zu bekommen, und ich bin auf der Suche auf Möglichkeiten, es zu Refactoring. Ich habe begonnen, die Zustands-/Strategie-Muster zu betrachten, aber es scheint, als ob die ganze Logik nur irgendwann an einer Stelle zusammengelegt werden müsste. Mit allen Abhängigkeiten von Antworten/Attachments/Log-Einträgen ist es außerdem schwierig, Mocks zu injizieren, weil es so viel hat, dass es verfolgen muss.
Hier ist ein Pseudocode-ish-Layout des Formularobjekts "Speichern" -Funktionalität, vereinfacht nach unten ... es beginnt zu fiesen und ich versuche zu sehen, ob ich es irgendwie sauberer machen kann.
und die Frage war? ... –
Gibt es irgendwelche Möglichkeiten, die Logik aus BigNastyMethod herauszuziehen? Würde ein Designmuster helfen? Welche? – Chris