In einem objektorientierten Programm: Wie viel Abstraktion ist zu viel? Wie viel ist genau richtig?Wie viel Abstraktion ist zu viel?
Ich war schon immer eine Art Schraubenzieher. Ich habe das Konzept verstanden, das hinter einem hohen Maß an Verkapselung und Abstraktion steht, aber habe immer instinktiv gespürt, dass das Hinzufügen von zu viel das Programm nur verwirren würde.
Ich habe immer versucht, für eine Menge an Abstraktion zu schießen, die keine leeren Klassen oder Ebenen übrig ließ. Und im Zweifelsfall würde ich, anstatt der Hierarchie eine neue Ebene hinzuzufügen, versuchen, etwas in die vorhandenen Ebenen einzupassen.
Allerdings traf ich in letzter Zeit stärker abstrahierte Systeme. Systeme, bei denen alles, was später eine Darstellung in der Hierarchie erfordern könnte, im Vordergrund steht. Dies führt zu vielen leeren Schichten, die zunächst als schlechtes Design erscheinen. Ich bin mir jedoch bei der Überlegung bewusst geworden, dass das Verlassen dieser leeren Schichten Ihnen mehr Orte bietet, an die Sie sich in der Zukunft ohne viel Refactoring anpassen können. Dadurch können Sie neue Funktionen auf die alten hinzufügen, ohne dass Sie so viel Arbeit aufwenden müssen, um die alten anzupassen.
Die zwei Risiken davon scheinen zu sein, dass Sie die Schichten bekommen könnten, die Sie falsch brauchen. In diesem Fall würde man immer noch aufwändige Refactoring durchführen müssen, um den Code zu erweitern und würde immer noch eine Tonne nie genutzter Layer haben. Aber abhängig davon, wie viel Zeit Sie damit verbringen, die ersten Abstraktionen zu erstellen, die Chance, es zu vermasseln, und die Zeit, die später eingespart werden könnte, wenn Sie es richtig machen - es könnte sich immer noch lohnen, es zu versuchen.
Das andere Risiko, das ich mir vorstellen kann, ist das Risiko, es zu überholen und nie alle zusätzlichen Schichten zu benötigen. Aber ist das wirklich so schlimm? Sind Extraklassen-Schichten wirklich so teuer, dass sie sehr verlustreich sind, wenn sie nie benutzt werden? Der größte Aufwand und Verlust wäre hier die Zeit, die im Vorfeld der Schichten verloren geht. Ein großer Teil dieser Zeit kann jedoch später gespeichert werden, wenn man mit dem abstrahierten Code arbeiten kann, anstatt mit Code auf niedrigerer Ebene.
Also wann ist es zu viel? An welchem Punkt werden die leeren Schichten und die zusätzlichen "möglicherweise" Abstraktionen übertrieben? Wie wenig ist zu wenig? Wo ist der Lieblingsplatz?
Gibt es irgendwelche verlässlichen Faustregeln, die Sie im Laufe Ihrer Karriere gefunden haben und die Ihnen helfen, die benötigte Abstraktion zu beurteilen?
Wie lange ein Stück Schnur ist ??? ;) – Goz
Sollte CW IMHO sein, da es keine ** an ** Antwort –
@Binary Worrier Done hat. –