Ich habe eine große Klasse (40 oder so Methoden), die Teil eines Pakets ist, das ich als Kursarbeit einreichen werde. Momentan sind die Methoden in Bezug auf den Nutzen öffentlich/privat usw. ziemlich durcheinander und ich möchte sie auf eine vernünftige Art und Weise bestellen. Gibt es eine Standardmethode, dies zu tun? Z.B. normalerweise werden Felder vor Methoden aufgelistet, Konstruktoren werden vor anderen Methoden aufgeführt, und getters/setters zuletzt; Was ist mit den übrigen Methoden?Gibt es eine Java-Methode, die Konventionen festlegt?
Antwort
Einige Konventionen listen zuerst alle öffentlichen Methoden auf, dann alle privaten - das bedeutet, dass es einfach ist, die API von der Implementierung zu trennen, auch wenn keine Schnittstelle vorhanden ist, wenn Sie sehen, was ich meine.
Eine andere Idee besteht darin, verwandte Methoden zu gruppieren - dies erleichtert es, Nähte zu erkennen, bei denen Sie Ihre vorhandene große Klasse in mehrere kleinere, zielgerichtetere aufteilen können.
+1. Ich sortiere lieber nach Sichtbarkeit. Shame Eclipse kann das nicht automatisch tun (es gruppiert immer alle Konstruktoren zusammen und alle Methoden zusammen.) – finnw
@finnw, file einen Fehlerbericht. Es ist bekannt, dass fremde Dinge von dort aus implementiert werden. –
40 Methoden in einer einzelnen Klasse ist ein bisschen viel.
Wäre es sinnvoll, einen Teil der Funktionalität in andere - entsprechend benannte - Klassen zu verschieben. Dann ist es viel einfacher zu verstehen.
Wenn Sie weniger haben, ist es viel einfacher, sie in einer natürlichen Lesereihenfolge aufzulisten. Ein häufiges Paradigma ist, Dinge entweder vor oder nach aufzulisten Sie brauchen sie, in der Reihenfolge, die Sie sie brauchen.
Dies bedeutet normalerweise, dass main() oben oder unten geht.
youre so richtig - das ist kein Bestellproblem – kostja
Sie haben nicht immer eine Wahl, zum Beispiel wenn Sie eine Schnittstelle mit vielen Methoden implementieren. – finnw
Dies ist eine Android-Aktivität, also gibt es viele, die einfach nirgends anders hingehen können, "onPause()", "onResume()" usw. sowie alle meine "OnClickListener" -Felder, obwohl sie dies sind Felder, nicht aussehen oder verhalten sich wie sie, so dass es sinnvoll ist, sie separat aufzuführen. – fredley
Verwenden Sie Eclipse? Wenn dies der Fall ist, würde ich mich an die Standardsortierreihenfolge halten, da dies wahrscheinlich derjenige ist, der Ihren Code liest (obwohl es nicht meine bevorzugte Sortierreihenfolge ist).
Meine "Konvention": statisch vor der Instanz, öffentlich vor private, Konstruktor vor Methoden, aber Hauptmethode unten (falls vorhanden).
Nicht sicher, ob es einen allgemein anerkannten Standard gibt, aber meine eigenen Präferenzen sind;
- Konstruktoren erster
- statische Methoden Als nächste, wenn es eine Hauptmethode, immer vor der anderen statischen Methoden
- Methoden nicht statisch nächsten, in der Regel in der Reihenfolge der Bedeutung der durch beliebiges Verfahren gefolgt Verfahren, dass es Anrufe. Dies bedeutet, dass öffentliche Methoden, die andere Klasse Methoden aufrufen, erscheinen nach oben und private Methoden, die keine anderen Methoden aufrufen, in der Regel auf den unteren
- Standardmethoden wie
toString
,equals
undhashcode
nächsten - Getter und Setter haben einen besonderen Platz am Ende reservierte zuunterst der Klasse
Ich bevorzuge wirklich Konstruktoren zuletzt, weil ein richtig geschriebener Konstruktor sehr wenig anderes tun sollte als seine Argumente Eigenschaften zuweisen. – GordonM
Je präziser Link «Codekonventionen» zu: «Class and Interface Declarations»
+1, afaik - das ist der einzige Beitrag, der tatsächlich die Frage beantwortet. JA Es gibt eine Standardreihenfolge, wie von Oracle und Sun vorgeschrieben: 1. öffentlicher Kommentar, 2. Klasse, 3. interner Kommentar, 4. statische Daten, 5. Instanzdaten, 6. Ctors, 7. Methoden und innerhalb jeder Abschnittsgruppe logisch, nicht durch Zugänglichkeit. –
@VadimKirilchuk «Internet Archive» war down ... –
http://www.oracle.com/technetwork/java/codeconvtoc-136057.html –
Klasse (statische) Variablen: Zuerst die öffentlichen Klassenvariablen, dann die geschützt, und dann die private.
Instanzvariablen: Erst öffentlich, dann geschützt und dann privat.
Konstrukteurs
Methoden: Diese Methoden sollten nach Funktionalität gruppiert werden eher als durch Umfang oder Zugänglichkeit. Zum Beispiel kann eine private Klassenmethode zwischen zwei öffentlichen Instanzmethoden liegen. Das Ziel ist es, lesen und verstehen den Code einfacher.
Quelle: http://www.oracle.com/technetwork/java/codeconventions-141855.html
Dies ist 15 Jahre alt und wahrscheinlich ein wenig veraltet mit dem Aussehen der modernen IDEs ... – assylias
@assylias: IMO, Lesbarkeit ist unabhängig von IDE. Öffentlich vor privat zu bleiben, ist normalerweise besser. – saurabheights
Auch Eclipse bietet die Möglichkeit, die Teilnehmer für Sie zu sortieren, wenn Sie aus irgendeinem Grund sie gemischt:
Ihre Klassendatei öffnen, die unterwegs zu „Source "im Hauptmenü und wählen Sie" Mitglieder sortieren ".
von hier genommen: Sorting methods in Eclipse
Beachten Sie auch, dass, wenn sie mit Code wie folgt _working_, die meisten IDE ermöglicht es Ihnen, die Definition zu sehen, was auch immer automatisch unter dem Cursor befindet. Dies bedeutet, dass Sie nichts tun müssen außer einen Blick. –