Ein Syllogismus:
Allgemeinheit ist teuer.
Sie geben das Geld anderer Leute aus.
Daher muss der Aufwand der Allgemeinheit gegenüber den Stakeholdern gerechtfertigt sein.
Fragen Sie sich, ob Sie das allgemeinere Problem wirklich lösen, um den Beteiligten später Geld zu sparen, oder ob Sie es nur als intellektuelle Herausforderung empfinden, eine unnötig allgemeine Lösung zu finden.
Wenn Allgemeingültigkeit wünschenswert ist , sollte sie wie jedes andere Merkmal entworfen und getestet werden . Wenn Sie keine Tests schreiben können, die belegen, wie die von Ihnen implementierte Allgemeingültigkeit ein in der Spezifikation gefordertes Problem löst, müssen Sie das nicht tun! Eine Funktion, die keine Designkriterien erfüllt und nicht getestet werden kann, ist eine Funktion, auf die sich niemand verlassen kann.
Und schließlich gibt es kein "so allgemein wie möglich". Angenommen, Sie schreiben Software in C #, nur aus Gründen der Argumentation. Wird jede Klasse eine Schnittstelle implementieren? Jede Klasse eine abstrakte Basisklasse mit jeder Methode eine abstrakte Methode? Das ist ziemlich allgemein, aber bei weitem nicht "so allgemein wie möglich". Dies ermöglicht es den Benutzern lediglich, die Implementierung einer Methode durch Unterklassen zu ändern. Was ist, wenn sie die Implementierung einer Methode ohne Unterklassen ändern möchten? Sie können jede Methode tatsächlich zu einer Eigenschaft des Delegattyps mit einem Setter machen, sodass die Benutzer jede Methode in etwas anderes ändern können. Aber was ist, wenn jemand mehr Methoden hinzufügen möchte? Jetzt muss jedes Objekt erweiterbar sein.
An diesem Punkt sollten Sie C # verlassen und JavaScript einbeziehen. Aber Sie sind immer noch nicht allgemein genug angekommen. Was ist, wenn jemand ändern möchte, wie die Mitgliedersuche für dieses bestimmte Objekt funktioniert? Vielleicht sollten Sie stattdessen alles in Python schreiben.
Zunehmende Allgemeinheit bedeutet oft, die Vorhersehbarkeit aufzugeben und die Testkosten massiv zu erhöhen, um sicherzustellen, dass die implementierte Allgemeinheit tatsächlich einen tatsächlichen Benutzerbedarf erfüllt . Sind diese Kosten durch ihren Nutzen für die Stakeholder gerechtfertigt, die dafür zahlen? Vielleicht sind sie es; Sie können dies mit den Stakeholdern besprechen. Meine Stakeholder sind keineswegs bereit, die statische Eingabe aufzugeben, um ein völlig unnötiges und extrem teures Maß an Allgemeingültigkeit zu erreichen, aber vielleicht sind es Ihre.