Schnittstellen mit statischen Feldern: Eine Falle für Unvorsichtige
Java-Entwickler stoßen häufig auf Schnittstellen mit zahlreichen statischen Feldern, die als „Konstanten“ verwendet werden. Obwohl diese Technik praktisch erscheinen mag, wird sie im Allgemeinen als schlechte Praxis verpönt.
Das Hauptproblem bei diesem Ansatz ist die Verbreitung von Konstanten im gesamten Code. Durch die Implementierung von Klassen werden alle statischen Felder zu einem Teil ihrer öffentlichen Schnittstelle, auch wenn sie nur intern verwendet werden. Beispielsweise wird die SwingConstants-Schnittstelle von vielen Klassen implementiert, wodurch ihre umfangreiche Liste von Konstanten wahllos allen zugänglich gemacht wird.
Der Software-Architekt Josh Bloch warnt ebenfalls vor diesem Muster:
„Die Implementierung einer konstanten Schnittstelle verursacht.“ „[Implementierungsdetails] gelangen in die exportierte API der Klasse“, erklärt er. „Es stellt eine Verpflichtung dar: Wenn die Klasse in einer zukünftigen Version so geändert wird, dass sie die Konstanten nicht mehr verwenden muss, muss sie dennoch die Schnittstelle implementieren, um die Binärkompatibilität sicherzustellen.“
Alternativen zu diesem Muster umfassen die Verwendung Aufzählungen oder das Definieren von Konstanten als öffentliche statische Felder in einer nicht instanziierbaren Klasse. Diese Methoden ermöglichen anderen Klassen den Zugriff auf Konstanten, ohne ihre eigene API zu überladen oder das Kapselungsprinzip zu verletzen.
Zusammenfassend lässt sich sagen, dass Schnittstellen mit statischen Feldern zwar einen gewissen Nutzen zu bieten scheinen, aber unnötige Komplexität und potenzielle Wartungsprobleme mit sich bringen. Wenn Sie mit Konstanten arbeiten, sollten Sie die Verwendung von Aufzählungen oder nicht instanziierbaren Klassen als geeignetere und wartbarere Optionen in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonSchnittstellen mit statischen Feldern: Sind sie ein Code-Geruch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!