Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
8. Sep 2014
Exakt. Das erwähne ich auch fast immer, wenn ich über Prinzipien etc rede: das sind Werkzeuge und grobe Richtlinien in unserem riesengroßen Werkzeugkasten.
Das heißt nicht, dass sie immer und überall Anwendung finden müssen - manchmal kann man auch fünfe grade sein lassen und muss das nicht bis ins letzte Bit verdesignpatternifizieren :mrgreen:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
8. Sep 2014
Ach, da gibts oft genug Gelegenheiten, du musst sie nur erkennen :stupid:
Aber mal Quatsch beiseite, das ist natürlich das Problem bei Beispielen, um bestimmte Aspekte zu verdeutlichen, dass es immer Haken gibt und man im Rahmen dieses limitierten Beispielcodes etwas komplett anders lösen würde/könnte. Nur meist ist der Code ja da, um eine bestimmte Sache zu verdeutlichen.
Im übrigen ist das...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
8. Sep 2014
Wie schon gesagt, das Beispiel hinkt, ein einziger numerischer Wert, der sich unterscheidet, rechtfertigt kaum verschiedene Klassen.
Aber lasst uns ruhig noch nen bisschen auf dem Beispiel rumreiten, bis wir den eigentlichen Sinn davon wieder vergessen haben :twisted:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
8. Sep 2014
In deinem Beispiel besteht die Rabattberechnung aus mehreren Teilen, der erste Teil, der sich über den Typ des Kunden ergibt (normalo, silber, gold...), also der Rabatt, den er immer bekommt und zusätzlich ich nenns mal temporären Rabatt (weil er Geburtstag hat oder Deutschland 7 Tore geschossen hat, oder...).
Natürlich hinkt das Beispiel wie es Beispiele nunmal tun, denn der flexibelste Weg...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
8. Sep 2014
Bei sowas sind enums zu vermeiden und Vererbung/Polymorphie zu nutzen (z.B. Strategie oder Kommando Pattern)
Wenn ich das richtig in Erinnerung habe, dann ging es um das TCustomer Beispiel und den jeweiligen Rabatt. In solch einem Fall hab ich verschiedene TCustomer Nachfahren, die jeweils die GetRabatt Methode überschreiben.
In diesem Zusammenhang finde ich diesen Clean Code Talk sehr...