it-swarm.com.de

Gibt es Konventionen für die Reihenfolge von Java -Methoden?

Ich habe eine umfangreiche Klasse (ca. 40 Methoden), die Teil eines Pakets ist, das ich als Kursarbeit einreichen werde. Gegenwärtig sind die Methoden in Bezug auf öffentliche/private Dienste usw. ziemlich durcheinander und ich möchte sie auf vernünftige Weise bestellen. Gibt es eine Standardmethode dafür? Z.B. Normalerweise werden Felder vor Methoden aufgeführt, die Konstruktoren werden vor anderen Methoden aufgeführt und Getter/Setter zuletzt. Was ist mit den restlichen Methoden?

145
fredley

Einige Konventionen listen zuerst alle öffentlichen und dann alle privaten Methoden auf - das bedeutet, dass es einfach ist, die API von der Implementierung zu trennen, auch wenn keine Schnittstelle beteiligt ist, wenn Sie verstehen, was ich meine.

Eine andere Idee ist, verwandte Methoden zu gruppieren - dies erleichtert das Auffinden von Nähten, in denen Sie Ihre vorhandene große Klasse in mehrere kleinere, gezieltere Klassen aufteilen können.

120
Jon Skeet
  1. Klassenvariablen (statische Variablen): Zuerst die öffentlichen Klassenvariablen, dann die geschützten und dann die privaten.

  2. Instanzvariablen: Zuerst öffentlich, dann geschützt und dann privat.

  3. Konstruktoren

  4. Methoden: Diese Methoden sollten nach Funktionalität und nicht nach Umfang oder Zugänglichkeit gruppiert werden. Eine private Klassenmethode kann sich beispielsweise zwischen zwei öffentlichen Instanzmethoden befinden. Ziel ist es, das Lesen und Verstehen des Codes zu erleichtern.

Quelle: http://www.Oracle.com/technetwork/Java/codeconventions-141855.html

106
Michael

Der genauere Link zu "Code Conventions": "Klassen- und Schnittstellendeklarationen"

36

Ich bin mir nicht sicher, ob es einen allgemein akzeptierten Standard gibt, aber meine eigenen Vorlieben sind es.

  • konstrukteure zuerst
  • statische Methoden als nächstes, wenn es eine Hauptmethode gibt, immer vor anderen statischen Methoden
  • nicht statische Methoden als Nächstes, normalerweise in der Reihenfolge der Bedeutung der Methode, gefolgt von den von ihr aufgerufenen Methoden. Dies bedeutet, dass öffentliche Methoden, die andere Klassenmethoden aufrufen, oben angezeigt werden und private Methoden, die keine anderen Methoden aufrufen, normalerweise unten angezeigt werden
  • standardmethoden wie toString, equals und hashcode next
  • getter und Setter haben einen besonderen Platz, der ganz unten in der Klasse reserviert ist
14
Qwerky

40 Methoden in einer einzelnen Klasse sind ein bisschen viel.

Wäre es sinnvoll, einen Teil der Funktionalität in andere - entsprechend benannte - Klassen zu verschieben. Dann ist es viel einfacher, einen Sinn zu erkennen.

Wenn Sie weniger haben, ist es viel einfacher, sie in einer natürlichen Lesereihenfolge aufzulisten. Ein häufiges Paradigma besteht darin, Dinge entweder vorher oder nachher aufzulisten, die Sie benötigen, in der Reihenfolge, in der Sie sie benötigen.

Dies bedeutet normalerweise, dass main() oben oder unten steht.

Meine "Konvention": statisch vor Instanz, öffentlich vor privat, Konstruktor vor Methoden, aber Hauptmethode unten (falls vorhanden).

11
eljenso

Außerdem bietet Eclipse die Möglichkeit, Klassenmitglieder für Sie zu sortieren, wenn Sie sie aus irgendeinem Grund vertauscht haben:

Öffnen Sie Ihre Klassendatei, gehen Sie im Hauptmenü auf "Quelle" und wählen Sie "Mitglieder sortieren".

entnommen von hier: Sortiermethoden in Eclipse

2
Stephan Richter

Verwenden Sie Eclipse? In diesem Fall würde ich mich an die Standard-Sortierreihenfolge für Mitglieder halten, da dies wahrscheinlich am vertrautesten ist, wenn jemand Ihren Code liest (obwohl dies nicht meine Lieblingssortierreihenfolge ist).

1
finnw