Fragen zu Naming-Conventions

Luk10

Top Contributor
Grüße,

Ich habe einige Fragen zu den Java Naming-Conventions. Es geht dabei nicht darum ob es an sich zulässig ist, sonder ob es "guter Stil" ist.

1. Ist es okay wenn mein Package den gleichen Namen wie ein anderes Package aus der API hat?
Beispiel:
Code:
meinProjekt.core.helpers
und
Code:
javax.xml.bind.helpers

2. Frage Nummer eins nur mit Klassen
Beispiel
Code:
meinProjekt.math.Point
und
Code:
java.awt.Point

3. Ich brauche englische Namen für zwei Interfaces. Es geht um intersections, also Objekte die sich im GUI überschneiden:
> Eins ist ein Marker-Interface für Objekte die überschnitten werden können
> Das andere ist ein Interface für Objekte die aktiv andere Objekte überschneiden können

Finde irgendwie keinen treffenden Namen

Danke,
-Luk10-
 
zu 1)
Klar, wäre doch auch schlimm wenn so namen wie
Code:
util
tabu wären.
Als package bezeichnet man außerdem den kompletten Namen, also
Code:
meinProjekt.core.helpers
. Wenn du dann irgendwo den namen deiner Firma/deinen Namen/den Namen deines Projektes reinsetzt kanns da keine Überschneidungen zu anderen packages geben.

zu 2)
Sollte man vermeiden wenn möglich. Wenn man irgendwo im Quelltext nen Objekt der Klasse File sieht, dann geht man davon aus, dass es sich dabei um die Klasse java.io.File handelt. Das wird den Leser irritieren wenn du da ne eigene Klasse File hast.
 
Zu 3)
Wie wäre es mit etwas in die Richtung
Code:
Intersectable
/
Code:
Intersector
?
 
Es gibt aus gutem Grund die Konvention, dass ein Packagename mit der "umgekehrten top-level domain der Mailadresse des Entwicklers" anfangen sollte. Wenn du
[c]luk@site.com[/c]
bist, sollten die Packagenamen die Struktur
com.site.projectnameinlowercase.subpackage
haben. Damit gibt es keine Kollisionen.

Zu den Klassennamen: Eigentlich sind die Packagenamen ja gerade dazu da, solche "Zweideutigkeiten" zwischen gängigen Namen wie "Point" aufzulösen. Allerdings sollte man IMHO vermeiden, Kollisionen zu haben, zwischen eigenen Namen, und Namen in Packages, die im eigenen Package oft importiert werden. Wenn du eine GUI-Klasse bastelst, die "viel" aus java.awt braucht, und abzusehen ist, dass es Klassen gibt, die sowohl
Code:
java.awt.Point
als auch
Code:
com.site.yourproject.Point
, sollte man sich für letzteres vielleicht einen anderen Namen ausdenken...
 
Ich pers. versuche Klassennamen eindeutig zu halten und von den Core-Klassen zu unterscheiden.
Dabei stelle ich -abhängig vom Auftrag- eine Kennung vor dem eigentlichen Klassennamen.

Bspw. wird aus dem
Code:
com.site.yourproject.Point
dann bspw.
Code:
com.site.yourproject.LukPoint

Somit wird beim Lesen des Codes schnell klar, dass es sich hier um deine Implementierung von Point handelt und nicht
Code:
java.awt.Point
gemeint ist. Klar kann man das aus dem import anweisungen auch erkennen.
 
Grüße,

Ich habe einige Fragen zu den Java Naming-Conventions. Es geht dabei nicht darum ob es an sich zulässig ist, sonder ob es "guter Stil" ist.

1. Ist es okay wenn mein Package den gleichen Namen wie ein anderes Package aus der API hat?
Beispiel:
Code:
meinProjekt.core.helpers
und
Code:
javax.xml.bind.helpers

-Luk10-

Erstell in Eclipse (Falls du diese verwendest) ein Beispiel Java Projekt. Lege ein Package mit den Name "java.lang" an.
Lege eine Klasse "String" in diesen Package an. Implementiere irgendetwas darin, mit Main-Methode.
Versuch das ganze zu starten und du wirst ein Fehler bekommen (java.lang.NoSuchMethodError).

So etwas sollte man immer unterlassen! Was okay ist, ist wie meine Vorredner schon gesagt haben.
Beispiel Package "de.firma.projekt.lang" mit einer Klasse "MyString" oder "ProjektString".
 

Zurück
Oben