dedlfix: Klasse aus Datenbank füllen, danach die Klasse verarbeiten

Beitrag lesen

Tach!

Beim Auto gab es sehr viele Erfahrungswerte, die zu diesen Sicherheitsvorschriften geführt haben. Wenn ich allein was programmiere, gibt es nur meine Erfahrung.

Mit Vererbung ist es doch das selbe, auch da gibt es unzählige schlechte Erfahrungen, nicht nur meine persönlichen. Viele Software-Architekturen helfen sich mit Daumenregeln, die das schlimmste vermeiden sollen. Die lauten da etwa so: Vererbungshierarchien sollten niemals tiefer als zwei Ebenen reichen. Es sollte nur von abstraken Klassen geerbt werden. Vererbung sollte nicht über Modul-Grenzen hinaus stattfinden… Andere Programmiersprachen verzichten sogar ganz auf Vererbung.

Das ist soweit Erfahrung aus Vergleichssituationen, die Empfehlungen darstellen. Für das konkrete Produkt dass es zu erstellen gibt, gibt es aber noch keine Erfahrung, wie das konkret verwendet werden wird. Du machst das aus Best-Practice-Gründen, und nicht weil du mit deinem Programm und dessen Verwendungswünschen bereits Erfahrung gesammelt hast.

Zweitens: Wie oben schon gesagt, bedeutet Lösungswege einzuschränken nicht zwingenderweise auch Probleminstanzen auszugrenzen. Im Falle von Subclass-Polymorphismus kann man immer auch Ad-Hoc-Polymorphimus als Supplement einsetzen, also Interfaces anstelle von Vererbungshierarchien.

Dann muss mal alles selbst schreiben, was in einer anderen Klasse bereits vorhanden ist und nur etwas angepasst werden müsste. Interfaces helfen bei solche einem Fall nicht viel.

Dann mal ein Gedankenspiel, angenommen PHPs Klassen wären standardmäßig immer final und um Vererbung zu ermöglichen müsste man die Klasse als inheritable deklarieren. Würdest du das dann immer tun, auch wenn du keine Verwendung dafür absehen kannst?

Du kannst das Argument auch mit einem bereits vorhandenen Szenario bringen. Um in C# Methoden überschreiben zu können, müssen diese als virtual gekennzeichnet sein, sonst gehts nicht. Und nein, ich setze da auch nicht immer vorbeugend virtuals davor. Aber in meinem Fall stört das nicht weiter, weil ich das bei Bedarf anpassen kann. Wie ich das allerdings handhaben würde, wenn ich eine Bibliothek zur freien Verwendung schriebe, kann ich nicht vorhersagen.

C# hat auch das wunderbare Feature der Extension Methods, da stört es mich auch nicht, wenn du eine Klasse abschließt, ich kann trotzdem Methoden definieren, die sich so anfühlen, als ob sie zur Klasse selbst gehörten.

dedlfix.