# 8.9 Fazit und Reflektion

Die Software wurde einige Male überarbeitet. Man konnte beobachten, dass immer neue Anforderungen hinzugekommen sind, die natürlich Anpassungen am Quelltext zur Folge hatten. Die neuen Anforderungen wurden aber "nicht irgendwie" umgesetzt, sondern führten in den Beispielen immer auch zu einer Optimierung des gesamten Quelltextes. Und so soll bzw. muss es auch in der beruflichen Praxis der Softwareentwicklung sein. Jede neue Anforderung muss zwei Aktionen auslösen: das Überdenken und Realisieren einer verbesserten Softwarestruktur und die eigentliche Umsetzung der neuen Anforderung.

Auch wenn hier die Anforderungen sehr klein und überschaubar waren, hätten wir ohne unsere Optimierungen jetzt schon einen sehr unübersichtlichen, fehleranfälligen Quelltext. Sehr wichtig für eine gute Übersichtlichkeit eines Quelltextes ist immer auch die durchdachte Benennung aller Klassen, Methoden und Variablen.

Die folgenden Ziele wurden mit den Anpassungen erreicht:

- Übersichtlichkeit durch bekannte Pattern und wiederkehrende Strukturen
- Öffnung für weitere Veränderungen
- Optimierung der Quelltextmenge

Teilweise wurden aber durch neue Anforderungen auch Anpassungen nötig die eher ein Fallenlassen bzw. Verschiebung von Mustern in andere Gebiete notwendig gemacht haben.

### Weitere Überlegungen für den Code

- Der Burger könnte einen eigenen Builder bekommen
- Der Salat könnte einen eigenen Builder bekommen
- Der Salat könnte mit Dekoratoren flexibler werden
- Die Einführung von Konstanten könnte den Code noch besser vor Tippfehlern schützen

### Kritik

Die Software kann noch immer optimiert werden.

- Trennung von Namen und der Bestellung
- Die Dekoratoren könnten spezialisiert werden (doch vielleicht gibt es auch Leute die Pommes mit Vinaigrette mögen?)

Die Orderstruktur stellt die verwendeten Muster dar. Es wäre aber eine andere Bennenung sinnvoller, die sich mehr auf das Burger-Restaurant bezieht. Da aber der gesamte Quelltext in einem Repository liegt, wurde diese Abgrenzung gewählt.

### Weitere Anmerkungen

Für einen professionellen Einsatz müssen alle gesendeten Daten auf dem Server "auf Unbedenklichkeit" überprüft werden. Auch muss mögliches Fehlverhalten abgefangen werden.

Aufgabe

Beantworten Sie folgende Fragen:

1. Welche Pattern wurden behandelt?
2. Die Pattern lassen sich in drei Untergruppen einteilen: "Erzeugungsmuster", "Strukturmuster" und "Verhaltensmuster". Überlegen Sie sich für jedes Pattern, warum es genau in die angegebene Untergruppe passt.
3. Überlegen Sie sich für jedes Pattern, welche Problemstellung damit gelöst wird.