Ich habe eine große Klasse (ungefähr 40 Methoden), die Teil eines Pakets ist, das ich als Kursarbeit einreichen werde. Gegenwärtig sind die Methoden in Bezug auf öffentliche / private Versorgungsunternehmen usw. ziemlich durcheinander und ich möchte sie auf vernünftige Weise bestellen. Gibt es eine Standardmethode dafür? Normalerweise werden Felder vor Methoden aufgelistet, die Konstruktoren werden vor anderen Methoden aufgelistet und Getter / Setter zuletzt; Was ist mit den restlichen Methoden?
java
methods
conventions
Fredley
quelle
quelle
Antworten:
In einigen Konventionen werden zuerst alle öffentlichen und dann alle privaten Methoden aufgelistet. Das bedeutet, dass es einfach ist, die API von der Implementierung zu trennen, auch wenn keine Schnittstelle beteiligt ist, wenn Sie sehen, was ich meine.
Eine andere Idee besteht darin, verwandte Methoden zu gruppieren. Dies erleichtert das Erkennen von Nähten, bei denen Sie Ihre vorhandene große Klasse in mehrere kleinere, gezieltere aufteilen können.
quelle
Klassenvariablen (statisch): Zuerst die öffentlichen Klassenvariablen, dann die geschützten und dann die privaten.
Instanzvariablen: Zuerst öffentlich, dann geschützt und dann privat.
Konstruktoren
Methoden: Diese Methoden sollten eher nach Funktionalität als nach Umfang oder Zugänglichkeit gruppiert werden. Beispielsweise kann eine private Klassenmethode zwischen zwei öffentlichen Instanzmethoden liegen. Ziel ist es, das Lesen und Verstehen des Codes zu erleichtern.
Quelle: http://www.oracle.com/technetwork/java/codeconventions-141855.html
quelle
Der genauere Link zu «Code Conventions»: «Klassen- und Schnittstellendeklarationen»
quelle
Ich bin mir nicht sicher, ob es einen allgemein akzeptierten Standard gibt, aber meine eigenen Vorlieben sind es.
toString
,equals
undhashcode
nächstequelle
new Thing()
sollte nur dazu führen, dass eine neue Sache instanziiert wird. Es sollte nicht dazu führen, dass Datenbankverbindungen geöffnet, Dateien geschrieben usw. usw. werden40 Methoden in einer 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 zu verstehen.
Wenn Sie weniger haben, ist es viel einfacher, sie in einer natürlichen Lesereihenfolge aufzulisten. Ein häufiges Paradigma besteht darin, Dinge entweder vor oder nach dem Bedarf in der Reihenfolge aufzulisten, in der Sie sie benötigen.
Dies bedeutet normalerweise, dass
main()
oben oder unten geht.quelle
onPause()
,onResume()
usw., sowie alle meineOnClickListener
Felder, die, obwohl sie Felder sind, schauen oder verhalten sich nicht wie sie so ist es sinnvoll, Listen Sie sie separat auf.Meine "Konvention": statisch vor Instanz, öffentlich vor privat, Konstruktor vor Methoden, aber Hauptmethode unten (falls vorhanden).
quelle
Außerdem bietet Eclipse die Möglichkeit, Klassenmitglieder für Sie zu sortieren, wenn Sie sie aus irgendeinem Grund verwechselt haben:
Öffnen Sie Ihre Klassendatei, gehen Sie im Hauptmenü zu "Quelle" und wählen Sie "Mitglieder sortieren".
von hier genommen: Sortiermethoden in Eclipse
quelle
Verwenden Sie Eclipse? Wenn ja, würde ich mich an die Standard-Sortierreihenfolge für Mitglieder halten, da dies wahrscheinlich jedem bekannt ist, der Ihren Code liest (obwohl dies nicht meine bevorzugte Sortierreihenfolge ist).
quelle