" Das konstante Schnittstellenmuster ist eine schlechte Verwendung von Schnittstellen. "
Wer auch immer diese Hypothese aufgestellt hat, wie auch immer ein Guru sein mag, hat sie auf der Grundlage der Notwendigkeit erfunden, weiterhin schlechte Gewohnheiten und Praktiken effizient umzusetzen. Die Hypothese basiert auf der Förderung der Gültigkeit schlechter Software-Design-Gewohnheiten.
Ich habe hier eine Gegenargumentation gegen diese Hypothese geschrieben: Was ist der beste Weg, um Konstanten in Java zu implementieren? Erklärung der Grundlosigkeit dieser Hypothese.
Diese Frage war 10 Jahre lang offen geblieben, bis sie innerhalb von zwei Stunden geschlossen wurde, nachdem ich meine Gründe für die Berichtigung dieser Hypothese veröffentlicht hatte, wodurch die Unwilligkeit zur Debatte durch diejenigen entlarvt wurde, die an dieser fehlgeleiteten Hypothese festhielten.
Dies sind die Punkte, die ich gegen die Hypothese ausgesprochen habe
Die Grundlage für diese Hypothese ist die Notwendigkeit von Methoden und EINSCHRÄNKENDEN Regeln, um mit den Auswirkungen schlechter Softwaregewohnheiten und -methoden fertig zu werden.
Die Befürworter des Gefühls " Das konstante Schnittstellenmuster ist eine schlechte Verwendung von Schnittstellen" können keine anderen Gründe als die angeben, die durch die Notwendigkeit verursacht werden, mit den Auswirkungen dieser schlechten Gewohnheiten und Praktiken umzugehen.
Lösen Sie das grundlegende Problem.
Und warum nutzen Sie dann nicht alle Sprachfunktionen der Java-Sprachstruktur und nutzen sie nach Belieben. Keine Jacken erforderlich. Warum Regeln erfinden, um Ihren ineffektiven Lebensstil zu verbarrikadieren, um effektivere Lebensstile zu diskriminieren und zu belasten?
Das grundlegende Problem
ist Informationsorganisation. Informationen, die den Prozess vermitteln, und das Verhalten dieser Informationen sollten zuerst zusammen mit den sogenannten Geschäftsregeln verstanden werden, bevor Lösungen für den Prozess entwickelt oder ergänzt werden. Eine solche Methode der Informationsorganisation wurde vor einigen Jahrzehnten als Datennormalisierung bezeichnet.
Dann ist nur das Engineering einer Lösung möglich, da die Ausrichtung der Granularität und Modularität der Komponenten einer Lösung mit der Granularität und Modularität der Komponenten der Informationen die optimale Strategie ist.
Es gibt zwei oder drei wesentliche Hindernisse für die Organisation von Informationen.
Die mangelnde Wahrnehmung für die Notwendigkeit der "Normalisierung" des Datenmodells.
Die Aussagen von EF Codd zur Datennormalisierung sind fehlerhaft, fehlerhaft und mehrdeutig.
Die neueste Modeerscheinung, die sich als agiles Engineering tarnt, ist die falsche Vorstellung, dass man die Organisation von Modulen nicht im Voraus planen und konditionieren sollte, da man sie jederzeit umgestalten kann. Als Ausrede wird Refactoring und kontinuierlicher Wandel verwendet, ohne durch zukünftige Entdeckungen behindert zu werden. Wesentliche Entdeckungen des Verhaltens von Prozessinformationen sind dann, indem Buchhaltungstricks verwendet werden, um Gewinne und Assetisierung zu verzögern, weshalb wesentliche Kenntnisse und deren Behandlung jetzt als nicht erforderlich angesehen werden.
Die Verwendung von Schnittstellenkonstanten ist eine gute Praxis.
Machen Sie sich keine Regeln und stellen Sie keine Fatwa dagegen auf, nur weil Sie Ihre Ad-hoc-Programmiergewohnheiten lieben.
Verbieten Sie den Waffenbesitz nicht mit dem Grund, dass es Menschen gibt, die entweder nicht wissen, wie man mit Waffen umgeht, oder die dazu neigen, Waffen zu missbrauchen.
Wenn die Regeln, die Sie zusammenstellen, für Programmieranfänger gedacht sind, die nicht professionell codieren können und zu denen Sie sich selbst zählen, sagen Sie dies - deklarieren Sie Ihre Fatwa nicht als für ordnungsgemäß normalisierte Datenmodelle anwendbar.
Eine dumme Argumentation - Interfaces sollten von den Flundern der Java-Sprache nicht so verwendet werden?
Es ist mir egal, was die ursprünglichen Absichten der Gründerväter für die US-Verfassung hatten. Die ungeschriebenen, nicht kodifizierten Absichten sind mir egal. Mir ist nur wichtig, was in der schriftlichen Verfassung literarisch kodifiziert ist und wie ich sie für das effektive Funktionieren der Gesellschaft nutzen kann.
Ich kümmere mich nur darum, was mir die Java-Sprach- / Plattformspezifikationen erlauben, und ich beabsichtige, sie voll auszunutzen, um mir ein Medium zu bieten, mit dem ich meine Softwarelösungen effizient und effektiv ausdrücken kann. Keine Jacken erforderlich.
Die Verwendung von Enum-Konstanten ist eigentlich eine schreckliche Praxis.
Es ist erforderlich, zusätzlichen Code zu schreiben, um Parameter dem Wert zuzuordnen. Die Tatsache, dass die Gründer von Java keine Parameter-Wert-Zuordnung bereitgestellt haben, ohne dass Sie geschrieben haben, dass der Zuordnungscode Enum-Konstanten demonstriert, ist eine ebenso unbeabsichtigte Verwendung der Java-Sprache.
Insbesondere, da Sie nicht dazu ermutigt werden, Ihre Parameter zu normalisieren und zu komponieren, besteht der falsche Eindruck, dass in einen Enum-Beutel gemischte Parameter zur gleichen Dimension gehören.
Konstanten sind API-Verträge
Vergiss das nicht. Wenn Sie Ihr Datenmodell entworfen und normalisiert haben und es Konstanten enthält, sind diese Konstanten Verträge. Wenn Sie Ihr Datenmodell nicht normalisiert haben, sollten Sie sich an die Anweisungen halten, wie man restriktives Codieren praktiziert, um mit dieser schlechten Angewohnheit umzugehen.
Daher sind Schnittstellen eine perfekte Möglichkeit, den Vertrag von Constants umzusetzen.
Eine seltsame Vermutung - Was ist, wenn die Schnittstelle versehentlich implementiert wird?
Jep. Jeder könnte versehentlich eine Schnittstelle versehentlich implementieren. Solch unbeabsichtigten Programmierern wird nichts im Wege stehen.
Entwerfen und normalisieren Sie Ihr Datenmodell gegen Leckagen
Platzieren Sie keine restriktiven Dekrete, um vermutete schlechte Praktiken zu schützen, die dazu führen, dass nicht kontrahierte / streunende Parameter in die API gelangen. Lösen Sie das grundlegende Problem, anstatt die Schnittstellenkonstanten dafür verantwortlich zu machen.
Die Nichtverwendung einer IDE ist eine schlechte Praxis
Eine normal funktionierende und EFFEKTIVE Programmiererin ist nicht da, um zu beweisen, wie lange sie unter Wasser bleiben kann, wie weit sie bei glühender Hitze oder nassen Gewittern gehen kann. Sie soll ein effizientes Werkzeug wie ein Auto oder einen Bus oder zumindest ein Fahrrad verwenden, um ihre 10 Meilen täglich zur Arbeit zu bringen.
Legen Sie keine Einschränkungen für andere Programmierer fest, nur weil Sie von der Programmierung ohne IDE besessen sind.
Einige Frameworks sollen Programmierern helfen, weiterhin schlechte Gewohnheiten effizient zu üben.
OSGI ist ein solcher Rahmen. Und so ist auch das Dekret gegen Schnittstellenkonstanten.
Daher die schlüssige Antwort ...
Schnittstellenkonstanten sind eine effektive und effiziente Möglichkeit, gut gestaltete und normalisierte Komponenten eines Datenmodells in Contract einzufügen.
Schnittstellenkonstanten in einer entsprechend benannten privaten Schnittstelle, die in einer Klassendatei verschachtelt ist, sind auch eine gute Vorgehensweise, um alle Ihre privaten Konstanten zu gruppieren, anstatt sie über die gesamte Datei zu verteilen.