Naming Conventions (Collections)

Status
Nicht offen für weitere Antworten.

-frank

Bekanntes Mitglied
hallo,

ich wollte euch fragen wie ihr eure Vectoren, Listen, Arrays, etc. benennt bzw. generell wie ihr mit längeren, zusammengesetzten variablennamen umgeht.
Ich habe vor kurzem mal gelesen, dass der plural wie bei "infos" okay ist, aber man solle keine ähnlich lautenden variablen haben. also
Code:
List<Info> infos = ..;
for(Info info:infos) {...}
soll nicht gut sein, weil info und infos schwer zu unterscheiden sind (in dem fall vielleicht nicht, weil sie so kurz sind, aber naja...)
eine andere variante ist die prefix-methode, also zb cInfo für ne Collection von Info Objekten. aber da gibts ja auch wieder viele leute, die ganz stark dagegen sind, prefixes zu verwenden.
Ich persönlich schreibe gerade an einem Program und habe dabei namen wie infoList gewählt.
aber irgendwie gefällt es mir auch nicht wirklich:
angenommen ich habe eine Klasse Student. studentList liest sich ja noch gut. woanders im programm habe ich aber eine klasse, die nicht das Student-objekt selbst, sondern nur Informationen über den Studenten benötigt. die entsprechende klasse nenne ich zB StudentInfo. weiters hat ein Student aber auch Partner-Studenten (mit denen er gemeinsam Kurse macht) --> partnerStudentList.
ein Objekt hat nun Informationen über einen Studenten (StudentInfo) und benötigt ebenso Informationen über die Partner dieses Studenten. diese Liste würde ich nach meiner regel dann partnerStudentInfoList nennen. aber ideal klingt das für mich nicht.

mögliche andere varianten wären aus meiner sicht zb, dass ich in der anderen klasse, die niemals Student-objekte hat, sondern immer nur StudentInfo, diese objekte trotzdem nur student nenne. so wird es kürzer und leserlicher, aber ich verliere natürlich die informationen, dass es sich hier nur um studentinfo-objekte handelte. IMO wäre das aber vertretbar in diesem fall.

oder ich mache die namen noch länger, dafür aber leserlicher (aus meiner sicht):
studentInfoListOfPartnerStudents
schrecklich lang, aber imo wäre es so etwas verständlicher.

das problem habe ich prinzipiell bei längeren variablen-namen, zb auch bei GUI-klassen:
angenommen ich habe ein JLabel-Objekt, dann nenne ich es einfach label. ist die klasse abgeleitet, zb PrettyLabel würde ich als variablen name wohl immer noch prettyLabel oder prettyLbl wählen. Dient ein normales Label dem Anzeigen eines Namens, heißt es bei mir wohl nameLabel (und andere dann addressLabel, etc.). ist es der Name eines Studenten, wäre ich wieder versucht es studentNameLabel zu nennen.
kombiniert wäre ich dann bei studentNamePrettyLabel. und wenn ich da noch ne Collection habe... ;)

---

generell ist mein Problem halt, dass ich gerne informationen in meine variablen namen packe ("nameLabel" statt nur "name" oder "label"), aber es bei konsequenter verfolgung dieser regel (weil ich es eben zB auch bei Collections so halte) einfach zu lange variablennamen werden. wenn ich aber dort kürze, ist es irgendwie auch verwirrend finde ich. (man hat sich ja dran gewöhnt). generell auf infos wie "label" oder "list" zu verzichten, damit ich bei langen namen dann keine probleme haben, kommt mir auch nicht ideal vor.

also naja, vielleicht habt ihr ja ein paar tipps bzw. könnt mir sagen, wie ihr es macht.

aja, eines noch: ist es nun üblich den "_" bei klassenvariablen zu verwenden oder nicht? auch da kenn ich leute, die es gerne machen nund andere, die es hassen.
 

Leroy42

Top Contributor
Ich pick' mir mal was raus, damit die anderen auch noch antworten können. :D

Code:
List<Info> infos = ..; 
for(Info info:infos) {...}
finde ich absolut sinnvoll und auch keinesfalls zu ähnlich.

Im Zeitalter der farbunterlegenden IDEs sollte sowas auch kein
Problem mehr darstellen.

-frank hat gesagt.:
aja, eines noch: ist es nun üblich den "_" bei klassenvariablen zu verwenden oder nicht? auch da kenn ich leute, die es gerne machen nund andere, die es hassen.

Ich gehöre eindeutig zu den Hassern einer solchen Konvention und
bin mir ziemlich sicher, das ich damit nicht alleine dastehe.
 
B

Beni

Gast
Zum einen achte ich darauf, dass meine Variablen lesbar sind, ein "cPtrNameLblImpl" kommt mir z.B. nicht in den Code. Zum anderen sollten die Namen Informationen beinhalten, aber nicht übermässig viele.
Ein "JLabel name" finde ich nicht schlimm; die wichtige Information ist, dass es etwas mit einem Namen zu tun hat. Dass es ein Label ist, kann man nachschlagen, oder erschliesst sich sowieso aus dem Kontext.
Zu den ähnlichen Namen: da ich selten lange Namen habe, habe ich auch wenig Probleme damit :wink: Ich finde es aber ganz praktisch, Arrays oder Collections den Namen "xs", und den Elementen darin "x", zu geben. Man sieht dann ihre Zusammengehörigkeit.

Und am Schluss ist sowieso nur wichtig, dass man etwas verwendet, womit alle Beteiligten glücklich sind :wink: (Konventionen sind Empfehlungen, keine Gesetze...)

[Edit]
Leroy42 hat gesagt.:
-frank hat gesagt.:
aja, eines noch: ist es nun üblich den "_" bei klassenvariablen zu verwenden oder nicht? auch da kenn ich leute, die es gerne machen nund andere, die es hassen.

Ich gehöre eindeutig zu den Hassern einer solchen Konvention und
bin mir ziemlich sicher, das ich damit nicht alleine dastehe.

Dem schliesse ich mich an. Ein "_" unterbricht den Lesefluss. Meiner Meinung nach sollte ein Klassenname eher ein Wort, und kein Satz sein.
 

sparrow

Top Contributor
Beni hat gesagt.:
Dem schliesse ich mich an. Ein "_" unterbricht den Lesefluss. Meiner Meinung nach sollte ein Klassenname eher ein Wort, und kein Satz sein.

Ich glaube -frank meint eher die weit verbreitete Angewohnheit Klassenvariablen mit einem _ zu beginnen.
In C ist das weit verbeitet.
Zumindest in Java halte ich nichts davon, da manchmal ein einzelner, manchmal zwei _ verwendet werden.

Da man sich in Java auch nicht um das freigeben der Variablen kümmern muss ist es meiner Meinung nach unnütz Variablen so heraus zu stellen. Bei gutem Code ist es sehr schnell ersichtlich ob es sich bei der Variable um eine Klassenvariable handelt oder nicht.

Ansonsten neige ich zu kurzen, englischen und verständlichen Variablen.
Für Collections das ganze ins Plural zu nehmen finde ich absolut ok und setze es selbst so um.

Bei sehr kurzlebigen Variablen achte ich auch darauf, dass der Name einen gewissen Sinn hat. Der typische Integer in einer hochzählenden for-Schleife heisst bei mir c für counter.
 

Yzebär

Bekanntes Mitglied
-frank hat gesagt.:
angenommen ich habe eine Klasse Student. studentList liest sich ja noch gut. woanders im programm habe ich aber eine klasse, die nicht das Student-objekt selbst, sondern nur Informationen über den Studenten benötigt. die entsprechende klasse nenne ich zB StudentInfo. weiters hat ein Student aber auch Partner-Studenten (mit denen er gemeinsam Kurse macht) --> partnerStudentList.

...

aja, eines noch: ist es nun üblich den "_" bei klassenvariablen zu verwenden oder nicht? auch da kenn ich leute, die es gerne machen nund andere, die es hassen.

Wie wäre es mit partnerList anstelle partnerStudentList. Daß es sich dabei um Partnerstudenten handelt sollte ja aus dem Kontext des Sourcecodes hervorgehen und wenn nicht, kann man ja auch einen eindeutigen Kommentar dazuschreiben. Wenn es sich um eine Liste, Collection oder Container handelt, schreibe ich das immer irgendwie in den Variablennamen hinein (z.B. studentenList, studentenColl, studentenContainer). Die Namen sollten natürlich eine gewisse Länge nicht überschreiten, dann sollte man besser agnze Teilworte weglassen, als diese abzukürzen.

Du meinst sicher Member-Variablen (*klugscheiß*)... Membervariablen sind durch "this" bereits eindeutig gekennzeichnet, Klassenvariablen durch den Klassennamen ebenso. Wer sowas "_" gut findet, sollte nicht in Java programmieren...
 

Leroy42

Top Contributor
Yzebär hat gesagt.:
Membervariablen sind durch "this" bereits eindeutig gekennzeichnet
Vor member-Variablen immer ein this. zu setzen, halte ich für genauso eine Unsitte.
Ich benutze this. nur, wenn es unbedingt erforderlich ist
(Parameternamen identisch zu member-Variablen)

Yzebär hat gesagt.:
Wer sowas "_" gut findet, sollte nicht in Java programmieren...

*fullack*
 

-frank

Bekanntes Mitglied
danke mal an alle!
mir kommt das "_" bei membervariablen (mit klassenvariablen kann man stativ variablen bezeichnen, oder?) einfach oft unter. wirklich begeistert bin ich davon auch nicht.

zu this: also das verwende ich schon recht gern. es ist zwar mühsam beim eingeben, aber dann ist halt eindeutig gekennzeichnet, dass es ne membervariable ist. wobei man dann natürlich schon sagen kann, dass "_" kürzer ist und das this. genauso beim lesen stören kann. andererseits lass ich mir dann ganz gern von der IDE anzeigen, wenn ich ohne this zugreife. das hat mir schon einige fehler erspart.
 
G

Guest

Gast
-frank hat gesagt.:
...zu this: also das verwende ich schon recht gern. es ist zwar mühsam beim eingeben, aber dann ist halt eindeutig gekennzeichnet, dass es ne membervariable ist. wobei man dann natürlich schon sagen kann, dass "_" kürzer ist und das this. genauso beim lesen stören kann. andererseits lass ich mir dann ganz gern von der IDE anzeigen, wenn ich ohne this zugreife. das hat mir schon einige fehler erspart.
Wenn du Eclipse verwendest, dann schau dir die Präfix/Postfix Einstellungen unter Preferences->Java->Codestyle
an. Ich habe schon mal vor einiger Zeit ein Projekt gesehen, bei dem Präfixe als verbindliches
Musskriterium vorgegeben waren. (z.B. m_ für Membervariablen, v_ für lokale und p_ für Parameter )
Man kann es lieben oder hassen... man gewöhnt sich daran, selbst wenn es sich mit dem Generator
für Getter und Setter nicht verträgt. ;)
 

Leroy42

Top Contributor
Anonymous hat gesagt.:
man gewöhnt sich daran, selbst wenn es sich mit dem Generator
für Getter und Setter nicht verträgt. ;)

Nix da! :noe:
Wenn, dann hat sich gefälligst mein Chef zu gewöhnen.

@frank: Ja, static-Variablen kann man als Klassenvariablen interpretieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Frage zu den Naming Conventions Allgemeine Java-Themen 5
Luk10 Fragen zu Naming-Conventions Allgemeine Java-Themen 5
L Konstanten der Klasse Color - Naming Conventions Allgemeine Java-Themen 6
M java klassen beerben u. den gleichen namen verwenden?(Naming Allgemeine Java-Themen 6
Q Einhaltung von Code Conventions, Wrapping Lines Allgemeine Java-Themen 16
K Variablenbenennungen / Coding Conventions Allgemeine Java-Themen 4
K jackson deserializer - Collections Allgemeine Java-Themen 6
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
Hacer Generics & Collections Allgemeine Java-Themen 8
C Generic collections und static typing Allgemeine Java-Themen 4
J Collections, Locks und volatile ? Allgemeine Java-Themen 1
A Compiler-Fehler Woher kommt der NullPointer? (Collections & Iterator) Allgemeine Java-Themen 7
E Collections Collections die Subojekte einer Klasse enthält? Allgemeine Java-Themen 7
O Collections Eigene Methodenzusicherung bei Collections als Parameter Allgemeine Java-Themen 2
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
B zwei-dimensionale Collections bzw. Array mit Indizes Allgemeine Java-Themen 3
Landei immutable Collections Allgemeine Java-Themen 27
J Collections in Instanzattributen als Kopie übergeben Allgemeine Java-Themen 4
J Rätselhaftes Verhalten von Collections Allgemeine Java-Themen 5
A Collections.emptySet() und triärer Operator Allgemeine Java-Themen 5
M Double Braces Notation um Collections zu initialisieren Allgemeine Java-Themen 9
W Komplexität von addAll() bei Collections Allgemeine Java-Themen 4
K Collections oder Vektoren sicher zu serialisieren? Allgemeine Java-Themen 5
W sortierte Iteration über Set oder Map, bzw. Collections Allgemeine Java-Themen 5
C Viele Informationen aus zwei Collections vergleichen Allgemeine Java-Themen 2
S Wie "zufällig" ist Collections.shuffle(.) Allgemeine Java-Themen 1
S Collections.binarySearch(list,"a") Allgemeine Java-Themen 7
T Sortierung mit Collections.sort() Allgemeine Java-Themen 4
J Collections Allgemeine Java-Themen 2
F Vererbung, Generizität und Collections. Allgemeine Java-Themen 7
G Collections als Array implementieren Allgemeine Java-Themen 2
K Elegante Lösung zum Manipulieren von Collections gesucht Allgemeine Java-Themen 16
T Collections/Arrays sortieren => ä, ö, ü, ß Groß/klein Allgemeine Java-Themen 3
R Probleme mit Collections - Teil 2 Allgemeine Java-Themen 4
R Probleme mit Collections Allgemeine Java-Themen 5
L-ectron-X Problem mit Collections.sort() mit Java 1.5 Allgemeine Java-Themen 9
C Collections.binarySearch Allgemeine Java-Themen 1
R Entsprechung von Stack() im Collections Framework...? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben