Zitat:
2. Mock <> Fake
Fakt ist, man ersetzt das richtige Dings durch nen anderes Dings. Und damit man son Dings austauschen kann, muss man sie voneinander entkoppeln.
Alles klar. Kann man so vereinfachen.
Zitat:
zu 4. robust eher im Sinne von wenn ich am Code an Stelle a etwas ändere krachts nicht an Stelle b, die auf der anderen Seite des Programms ist (geht auch ein bisschen Richtung Punkt 5)
zu 5. es geht nicht nur ums tippen sondern darum, dass man durch Erweiterungen nicht sein halbes System umstricken muss (Stichworte: OCP, LSP, ISP)
'einen Wolf tippen' ist die Quintessenz und der eigentliche Grund (einer davon), weshalb diverse Designregeln, OCP, LSP, ISP... eingeführt wurden. Ich mache etwas, weil ich nicht ewig tippen will, und 100 Jahre entwanzen, weil diese ich diese dämlichen Seiteneffekte nicht vermeiden kann und nicht, weil es gegen Gesetze verstößt. Kommt zwar aufs Gleiche heraus, aber ich habe hier ein paar sehr kluge Programmierer, die nur den Regeln folgen und dabei gar nicht merken, wie verworren, komplex und total überkandidelt das Ganze mittlerweile ist. Aber sie reiten auf den von Dir immer wieder zitierten Regeln herum und finden es total geil, sich 3 Tage über SRP den Kopf zu zerbrechen, anstatt es einfach 'einfach' zu gestalten. Ein sehr schönes Thema für einen anderen Thread.
Zitat:
Der will nur wissen, ob er XY machen darf oder nich und nicht, wie er das ermitteln.
Das war der korrekte Einwand von p80286, woraufhin ich meinte, man sollte 'IUser' durch 'IPermissions' ersetzen. Natürlich kann man das abstrahieren , aber die konkreten Rechte sind Bestandteil der Spezifikation und insofern nicht abstraktionswürdig. Kann man machen, wird man aber nicht. Wir haben Szenarioklassen à la 'Execute<BusinessObject>' die eine 'CanExecute' Methode haben, in der die Rechteabfrage umtergebracht ist.
Zitat:
Ich sag es oft
mir hast Du das noch nicht gesagt.
Aber dann verstehe ich deinen Einwand auch nicht: Ich habe ein Kommando als oberste Instanz. Dies führt eine Aktion und alle damit verbundenen weiteren Aktionen aus (Speichern, loggen, drucken, validieren etc.) Dem muss ich doch alle Abhängigkeiten übergeben, oder wie geht das sonst?