(Wie) sortiert ihr eure Felder, Methoden, etc?

Status
Nicht offen für weitere Antworten.

-frank

Bekanntes Mitglied
mich würde interessieren, ob ihr eure felder, methoden, kontruktoren, etc. speziell sortiert und wenn ja wie und warum. und wenn ihr fremden code anseht und ne methode sucht, benutzt ihr dann sowieso suchfunktionen (bzw. irgendwelche IDE views) oder geht ihr zb davon aus, dass methoden, die miteinander zu tun haben, untereinander stehen? order erwartet ihr ne alphabetische reihenfolge? wollt ihr, dass die static methoden/felder ganz oben/unten im file stehen? und wie siehts bei fields aus?

ich frage, weil ich gesehen habe, dass mir Eclipse anbietet den ganzen code zu sortieren und dabei sichtbarkeit, static/instance, alphabet, etc. berücksichtigt. ich hab mir den code bisher immer selbst sortiert. das führt nach meinem gefühl an manchen stellen zu nem guten ergebnis, an anderen, wos mir nicht wichtig schien, zu einem vollkommen unsortierten file...

was ist euch lieber? (sowohl beim eigenen code wie auch wenn ihr euch in fremden code einarbeiten müsst?)
 

Rock Lobster

Bekanntes Mitglied
Meine Member-Variablen sortiere ich nach Sinn und Zweck, allerdings nicht getrennt in private und public, da die meisten sowieso private sind und der Sinn für mich wichtiger ist.

Die Methoden sortiere ich ähnlich, passende setter und getter natürlich untereinander, Konstruktoren ganz oben, und dann nach Wichtigkeit. Methoden, die aus Interfaces geerbt sind, kommen bei mir meist nach unten (besonders wenn es Listener sind). Wenn zwei Methoden miteinander zu tun haben, z.B. weil eine die andere aufruft, dann stehen diese bei mir auch oft direkt untereinander.

Naja Ordnung halten ist immer so ein Ding, jeder hat so seine eigenen Vorstellungen, und es gibt viele Fälle, wo man eben Ausnahmen macht oder ein bestimmtes Schema halt nicht paßt, und dann wächst und wächst das... wenn's zu unübersichtlich wird, überlege ich allerdings, ob es sinnvoll wäre, die Klasse aufzuteilen oder sie mit einer anderen zu "verheiraten" (z.B. daß man zwischen zwei Klassen Abhängigkeiten findet, die man über Vererbung oder sowas klüger realisieren kann). Manchmal ist das eine sehr gute Lösung.
 

thomator

Bekanntes Mitglied
Also statics sind bei mir immer am Ende einer Klasse zu finden. Andere Variablen am Anfang. Sonst nix Besonderes, da ich eh mit Eclipse arbeite, wo man die Super-Buper Outline zur verfügung hat.
Is scho ein feines Arbeiten mit Eclipse... :wink:
 

FelixB

Bekanntes Mitglied
oben erstmal die Variablen, dann die Konstruktoren. Die Getter/Setter ganz nach unten, der Rest - meistens in der Reihenfolge, wie ich sie code ;)

zum Navigieren gibts dann in Eclipse ne schöne Outline-View bzw. andere nette Sachen (Call-Hierarchie etc...)
 

-frank

Bekanntes Mitglied
okay, bei mir ist das recht ähnlich. ich habe meine variablen eigentlich fast immer ganz oben, nicht nur die static. und static methoden kommen meisten ganz nach unten. innere klassen entweder ganz unten oder wenn sie ganz kurz sind eben zu den 2-3 methoden, die sie brauchen. kontruktoren immer ganz oben. also eh ähnlichkeiten mit euch.
das widerspricht aber recht stark den conventions von sun http://java.sun.com/docs/codeconv/html/CodeConventions.doc2.html#1852

frag mich halt jetzt, ob ich mich an die halten soll oder nicht...
 
B

bygones

Gast
variablen oben, static, finals und instanzvar. getrennt, dann konstruktor, dann irgendwelche methoden..

dank den IDEs achte ich nicht so darauf wann wo welche methode steht... die Trennung von Methoden und Variablen sind mir schon wichtig (zuerst variablen, dann methoden)
 

Evil-Devil

Top Contributor
ERstmal Header Comment, Packages, Class Deklaration

Dann Klassenvariablen und Konstruktor. Von da an geht es meist querbeet auch wenn ich nach möglichkeit setter und getter direkt nach dem konstruktor kommen zu lasse sofern es die gibt.

Ich nutzt die Outline der IDE sehr viel, von daher mach ich mir recht wenig Gedanken um ein spezielles Code Bild. lokale Variablen werden da deklariert wo sie gerade benötigt werden.
 

Rock Lobster

Bekanntes Mitglied
Ich hab die Outline zwar offen, aber benutz sie doch eher selten, weil meist weiß ich irgendwie, wo meine Methoden sind. Nur wenn ich wirklich zu faul zum Scrollen bin oder ich sie nicht sofort finde, schau ich in der Outline nach. Eigentlich blöd, weil man in der Outline viel schneller fündig wird. Aber irgendwie hab ich mich nie so recht daran gewöhnt ;)
 

thomator

Bekanntes Mitglied
Ich hab die Outline nicht offen, wenn ich was suche STRG+F3, dann kann ich via Eingabe von Anfangsbuchstaben sogar die Auswahl einschränken...
 

Tobias

Top Contributor
static final Konstanten

public static Variablen
private static Variablen

static Methoden

public Variablen (gibt es fast nie)
private Variablen

Konstruktoren

setter/getter

API-Methoden (hier stehn auch protected Methoden, weil die quasi API für Subklassen sind)

private Methoden

mpG
Tobias
 

Wodan

Aktives Mitglied
Reihenfolge der Eigenschaften in Klassen

Verschiedene Elemente einer Klasse müssen in einer Klasse untergebracht werden. Eine verbreitete Reihenfolge ist die Aufteilung in Sektionen:

* Klassenvariablen

* Objektvariablen

* Konstruktoren

* Methoden (erst Klassenmethoden, dann statische Methoden)

Innerhalb eines Blocks werden die Informationen oft auch bezüglich ihrer Zugriffsrechte sortiert. Am Anfang stehen sichtbare Eigenschaften und tiefer private. Der öffentliche Teil befindet sich deswegen am Anfang, da wir uns so schnell einen Überblick verschaffen können. Der zweite Teil ist dann nur noch für die erbenden Klassen interessant, und der letzte Teil beschreibt allein geschützte Informationen für die Entwickler. Die Reihenfolge kann aber problemlos gebrochen werden, indem private Methoden hinter öffentlichen stehen, um zusammenhängende Teile auch zusammenzuhalten.

^^hab ich eben in der Java ist auch eine Insel gelesen:Kapitel 6.7.17
 

Jango

Gesperrter Benutzer
Wodan hat gesagt.:
^^hab ich eben in der Java ist auch eine Insel gelesen:Kapitel 6.7.17
Dann würde ich das mal schnellstens in ein Zitat umändern. Du kannst nicht wahllos alles kopieren und einfügen, wie du es willst. Schonmal das Wort "Kopier"-Recht gehört? :wink:
Andernfalls wird es ein Moderator löschen (müssen).
 

AlArenal

Top Contributor
Interessant, dass hier bisher niemand gepostet hat, der den Stil praktiziert Variablen ans Ende der Klasse zu setzen. Der Stil begegnet mir in vielerlei kommerziellen und freien Projekten.
 

AlArenal

Top Contributor
Evil-Devil hat gesagt.:
Doch, Frank hat das in seinem Beitrag geschrieben das er das macht ;)

Ja, wo denn?

-frank hat gesagt.:
okay, bei mir ist das recht ähnlich. ich habe meine variablen eigentlich fast immer ganz oben, nicht nur die static. und static methoden kommen meisten ganz nach unten. innere klassen entweder ganz unten oder wenn sie ganz kurz sind eben zu den 2-3 methoden, die sie brauchen. kontruktoren immer ganz oben. also eh ähnlichkeiten mit euch.
das widerspricht aber recht stark den conventions von sun http://java.sun.com/docs/codeconv/html/CodeConventions.doc2.html#1852

frag mich halt jetzt, ob ich mich an die halten soll oder nicht...
 

byte

Top Contributor
Wenn ich neue Klassen erstelle, lasse ich sie vor dem Commit von Eclipse sortieren nach den Standardvorgaben. Danach sortiere ich nichts mehr um, weil das im Zweifel nur zu Team-Conflicts führt und man nervig mergen muss. Ich navigiere eh nur über den Outliner und den kann man ja eh bei Bedarf sortieren/ filtern, ohne dass die Sourcen verändert werden.
 

Saxony

Top Contributor
Wodan hat gesagt.:
[...]

* Klassenvariablen

* Objektvariablen

* Konstruktoren

* Methoden (erst Klassenmethoden, dann statische Methoden)

[...]

^^hab ich eben in der Java ist auch eine Insel gelesen:Kapitel 6.7.17

Hmm, da steckt aber mal wieder der Teufel im Detail.

Für mich sind Klasssenmethoden schon statische Methoden. ;)

Bei diesen Namenskonventionen (Klassen- / Objektvariablen) müsste man dann konsequenterweise auch von Klassen- /Objektmethoden sprechen.

bye Saxony
 

Evil-Devil

Top Contributor
AlArenal hat gesagt.:
Evil-Devil hat gesagt.:
Doch, Frank hat das in seinem Beitrag geschrieben das er das macht ;)

Ja, wo denn?

-frank hat gesagt.:
okay, bei mir ist das recht ähnlich. ich habe meine variablen eigentlich fast immer ganz oben, nicht nur die static. und static methoden kommen meisten ganz nach unten. innere klassen entweder ganz unten oder wenn sie ganz kurz sind eben zu den 2-3 methoden, die sie brauchen. kontruktoren immer ganz oben. also eh ähnlichkeiten mit euch.
das widerspricht aber recht stark den conventions von sun http://java.sun.com/docs/codeconv/html/CodeConventions.doc2.html#1852

frag mich halt jetzt, ob ich mich an die halten soll oder nicht...
Bring mir mehr Kaffee! :D
 

Saxony

Top Contributor
Hiho,

zusammenfassend kann man ja sagen, dass es besser ist nicht alles auf eine Zeile zu schreiben.

Ich hoffe aber das wenigstens die Tabs ordentlich gesetzt werden - in Eclipse bitte Ctrl+Shift+F verwenden. ;)

bye Saxony
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B OOP HashSet sortiert ausgeben Allgemeine Java-Themen 11
G Datentypen TreeMap nach Color sortiert (kd-Baum) Allgemeine Java-Themen 8
P Datentypen Große Datenmenge Sortiert halten Allgemeine Java-Themen 12
_dp Datentypen PriorityQueue sortiert falsch? Allgemeine Java-Themen 6
G File.listFiles nach Datum sortiert ausgeben Allgemeine Java-Themen 1
L Binärbaum sortiert ausgeben Allgemeine Java-Themen 11
M HashMap sortiert Allgemeine Java-Themen 6
T HashMap, sortiert nach Reihenfolge Allgemeine Java-Themen 7
m@nu FileTreeModel sortiert . uiuiui Allgemeine Java-Themen 14
E HashMap/Table sortiert nach nacheinander eingefuegten Elmeme Allgemeine Java-Themen 6
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Primzahl || Primfaktorzerlegung -> Eure Laufzeiten *Wen es halt interessiert* Allgemeine Java-Themen 10
R Welche waren eure ersten Projekte? Allgemeine Java-Themen 10
J Eure Meinung: Threads verwenden, oder nicht? Allgemeine Java-Themen 6
E Eure erstellten Programme Allgemeine Java-Themen 3
André Uhres Welches Werzkeug benutzt ihr um eure Mails zu lesen? Allgemeine Java-Themen 47
J Eure Wunschliste für Java 7? Allgemeine Java-Themen 114
J Eure Meinung - Das JMF (Java Media Framework) Allgemeine Java-Themen 3
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
L Softwarepatente - Eure Meinung Allgemeine Java-Themen 4
D Lombock primitive Felder in RequiredArgsConstructor Allgemeine Java-Themen 2
parrot Mehrdimmensionale Felder Allgemeine Java-Themen 4
parrot Felder - Feldwerte verdoppeln Allgemeine Java-Themen 18
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
S Java Felder Allgemeine Java-Themen 13
T Maximale Felder maximale Variablen Allgemeine Java-Themen 2
perlenfischer1984 Mit Lombok Builder Felder in Super Klasse füllen Allgemeine Java-Themen 12
S "Vererben" statischer Felder/Methoden Allgemeine Java-Themen 4
T URL + Felder Allgemeine Java-Themen 1
C Zugriff auf Event felder Allgemeine Java-Themen 0
L iText PDF Form-Felder werden nach Bearbeitung mit iText nicht mehr richtig erkannt. Allgemeine Java-Themen 2
faetzminator verschiedene Beans, verschiedene Felder "koppeln" Allgemeine Java-Themen 3
K Hilfe Felder Allgemeine Java-Themen 7
I Vergleich zweier Felder Allgemeine Java-Themen 3
S Zu viele Felder. Allgemeine Java-Themen 4
P Reflection - Wie rufe ich die Felder einer Klasse in einer Methode der Basisklasse? Allgemeine Java-Themen 4
megachucky Java Reflection -> versteckte Felder finden? Allgemeine Java-Themen 3
D Auf annotierte Felder oder Methoden zugreifen Allgemeine Java-Themen 4
J Instanz-Felder einer Klasse initialisieren Allgemeine Java-Themen 6
D Felder (Arrays) Allgemeine Java-Themen 4
G mit reflection an die felder einer klasse rankommen Allgemeine Java-Themen 4
L Datenbank Abfrage (Felder&Tabelle nicht fix) in ArrayLis Allgemeine Java-Themen 4
M Felder + Werte einer Klasse auslesen Allgemeine Java-Themen 6
P Bei String alle Alphanumerischen Felder löschen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben