Was ist die standard-Schnittstelle Benennung in der java-api
Werde ich gefragt, von einem Kollegen über die Throwable
Klasse in der java-API.
Als standard, kann ich das verstehen, jedes Wort mit der Endung *in der Lage ist, eine Schnittstelle in der java-API. Es ist ein Industrie-standard über die Verwendung von Worten wie Interface-Namen. So, ich unwissentlich, erzählte ihm dieser als Basis-Schnittstelle für alle Ausnahme-und Fehler-Typen in java-Welt. Dann zeigt er mir die java-Datei für diese Klasse.
Meine Fragen:
-
Warum java Volk hat gewählt dieser name für eine Klasse. Ich denke, dies sollte eine Schnittstelle standardmäßig?
-
Ist dies ein Muster zu verwenden *kann Wörter, die auch als interface?
-
Gibt es andere Beispiel für die Klasse endet mit *in der Lage?
Grüße.
- Serializable, Iterierbar Vergleichbar, Runnable, Callable. Alle ziemlich Häufig verwendeten interfaces.
- Sie sind Schnittstellen tatsächlich. Ich bin auf der Suche über die Klassen enden auf diese Weise.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist sehr üblich, für diejenigen, die '-in der Lage, die Namen werden Schnittstellen in Java, aber es gibt keine offizielle Konvention für die Schnittstelle Benennung, die ich gefunden habe, dass deutet darauf hin, dass 'können' sollten Namen sein, die interface-Namen, obwohl in der Regel der Fall ist.
Offizielle Java-Namenskonventionen finden Sie hier - es ist ziemlich mager, es gibt wirklich keine Beschränkungen für die Klasse oder Schnittstelle Benennung:
Ihre
Throwable
Frage, James Gosling sofort beantwortet werden, warum es eine Klasse sondern ein interface, auch wenn der name war passender für eine Schnittstelle.Leider der ursprüngliche Artikel von Sun/Oracle Website verschwunden, in den internet-äther, so kann ich nur indirekte Namensnennung:
edit: Da ich weiterhin bekommen upvotes auf diese Frage, fand ich den link zu der Sonne Diskussion über die Wayback Machine, hier: http://web.archive.org/web/20071013225816/http://java.sun.com/features/2002/03/gosling.html?source=jdc_news&date=20020430
Substantive werden immer verwendet, um Namen von Klassen, aber Throwable ist eine Ausnahme.
(Siehe was ich dort Tat?)
Gibt es auch andere, wie
Und natürlich gibt es viele Schnittstellen, die am Ende nicht in -in der Lage. Einige Leute mögen das Präfix alle Ihre interface-Namen mit einem " I " (IAdjustable statt Einstellbar). Wie code-Formatierung Kriege, deren nicht überall auf Zustimmung. Sun hat einige Vorschläge aber Sie sind ziemlich vage.
Interface-Namen sollten immer ein Adjektiv und, wenn möglich, sollten am Ende in der "Lage" wurde der trend in den Namenskonventionen innerhalb der Java-community. Das müssen nicht strikt befolgt werden, es ist nur eine Namenskonvention, es gibt nichts zu stoppen Sie von der Benennung der Schnittstelle/Klasse, was Sie wollen.
Ja, siehe http://www.iwombat.com/standards/JavaStyleGuide.html#Class%20and%20Interface%20Names
Clonable
*Hinweis, Interface-Namen sollten in der Regel auf Adjektive, in der Erwägung, dass Klassennamen sollten in der Regel Substantive.
Check-out-Seite 15 dieser style-guide-Dokument, veröffentlicht von der Sonne.
http://java.sun.com/docs/codeconv/CodeConventions.pdf
Es gibt auch einige Diskussionen darüber, ob es ein guter Stil fügen Sie den Buchstaben I-Schnittstellen. (Beispiel: ICat, IDog, etc.), aber das gilt generell für andere Sprachen und nicht der Java pro sagen.
Meiner persönlichen Meinung nach eine Konvention ist nur eine "Faustregel", wenn die Konvention in die Quere kommt, die Lesbarkeit des Codes, gehen Sie mit einer mehr beschreibenden Schnittstelle/Klasse name anstelle der eine, folgt der Konvention, aber wenn Ihr wirklich kämpfen zu kommen mit einer guten beschreibenden Klassennamen, vielleicht müssen Sie denken über die Funktionalität Ihrer Klasse/interface wieder ein bisschen mehr.
Sprechen wir über Namenskonventionen hier und ja,, *in der Lage ist die bevorzugte Konvention für die Benennung von Schnittstellen. Wie ich bin sicher, Sie haben gesehen, es gibt immer Ausnahmen. Zum Beispiel
System.arraycopy
ist nicht camel-cased.