Ich führe einen "statischen" Code-Durchlauf des Java-Codes von einem Kollegen (einem anderen Studenten)
durchFür mich ergibt das keinen Sinn; Von oben nach unten werden diese "Komponenten" -Objekte instanziiert (und später im Konstruktor verwendet), bevor sie deklariert werden. Aber der Code kompiliert und läuft glücklich. Ist das eine schlechte Übung?
%Vor%Sun Microsystems (jetzt von Oracle übernommen) hat seine Java Coding Style Guide im Jahr 1998, in dem sie eine bestimmte Organisation für Klassendeklarationen empfohlen haben:
Beachten Sie, dass die Datendeklarationen an den Anfang der Datei gesetzt werden. (Eine frühere Sun-Veröffentlichung von 1997 deckt nicht alles in der obigen Liste ab.) Das einzige Wichtige Die Sortierung erfolgt innerhalb der statischen Felder und innerhalb der Instanzfelder und nur dann, wenn die Felder Initialisierer enthalten, die sich auf andere Felder beziehen. Sie können ein Feld in einem Initialisierer nicht verwenden, bevor es selbst initialisiert wurde. In ähnlicher Weise kann ein Initialisierer (Element 3 oder 6) keine Vorwärtsreferenz auf ein Feld machen, außer als Ziel einer Zuweisung. (Siehe Java-Sprachspezifikation, Abschnitt 8.3.3 < Weitere Informationen über solche Vorwärtsreferenzen finden Sie unter: http://www.microsoft.com
[*] Die Terminologie in der obigen Liste (die wörtlich aus dem Handbuch von 1998 stammt) ist in Bezug auf die Punkte 4 und 8 veraltet. Genauer gesagt, von Java-Tutorial für verschachtelte Klassen : Terminologie: Verschachtelte Klassen sind in zwei Kategorien unterteilt: statische und nicht statische. Geschachtelte Klassen, die als Im modernen Sprachgebrauch gibt es keine "statische innere Klasse".
static
deklariert sind, heißen static geschachtelte Klassen . Nicht statische verschachtelte Klassen heißen innere Klassen .
Es gibt keinen wirklichen Konsens darüber. Die meisten Leute deklarieren Klassenvariablen am Anfang der Klassenimplementierung, gefolgt von den Methoden, aber das ist keine Voraussetzung. Einige Bücher wie "Code Complete" schlagen vor, Variablen so nahe wie möglich bei ihrer ersten Verwendung zu deklarieren. Dies hilft, den Umfang einer Variablen auf ein Minimum zu reduzieren.
Nein, sie werden nicht instanziiert, bevor sie deklariert werden. Die Reihenfolge der Initialisierung ist in Java festgelegt, und es spielt keine Rolle, wo in dem Code, den Sie Ihre Deklarationen und Konstruktoren setzen.
Was die Konvention betrifft, hängt es wirklich davon ab, mit was Sie sich wohl fühlen. Während die Wahrheit darin besteht, zuerst die Dateien und dann die Konstruktoren zu deklarieren, ist Ihr Ansatz genauso gültig wie jeder andere, solange es nicht gegen Ihre Natur- oder Unternehmensregeln verstößt.
Darüber hinaus gibt es viel gefährlichere Dinge in Ihrem Code, die ihn weniger lesbar machen, wie zum Beispiel Ein-Buchstaben-Variablen oder die extensive Verwendung von weniger gebräuchlichen Strukturen (zum Beispiel ternärer Operator für komplexe Bedingungen). Das Organisieren des Codes ist eines der kleineren Probleme, da jede anständige IDE den Code mit den Einstellungen, die Sie dort eingeben, reorganisieren kann.
Die allgemeine Deklarationsreihenfolge in Java, (Referenz: Java Coding Style Guide )
%Vor%Die Reihenfolge in jedem Satz sollte
seinDie Reihenfolge , in der die Member einer Klasse (Methoden, Attribute) deklariert werden, ist irrelevant. Per Konvention ist es üblich zuerst alle Attribute und Konstanten zu deklarieren, dann die Methoden.
Zum Beispiel in Ihrem Code: Es ist möglich, die Attribute im Konstruktor zu initialisieren und dann die Attribute zu deklarieren, weil einfach, wenn eine Klasse kompiliert wird, alle Attributdeklarationen und später berücksichtigt werden Wenn der Konstruktor tatsächlich genannt wird , werden die Attribute gefunden. Beachten Sie, dass auf die Attribute im Konstruktor zur Kompilierzeit nicht zugegriffen wird, deshalb erzeugen sie keinen Fehler; Sie werden nur zur Laufzeit abgerufen.
Es steht im Gegensatz zu normalen Konventionen und (als solches) macht es den Code weniger lesbar für Leute, die erwarten, dass die normalen Konventionen eingehalten werden ... d. h. die meisten Java-Programmierer.
Auf der anderen Seite, wenn der Code dies konsistent macht und einer vereinbarten lokalen Kodierungskonvention folgt, werden sich die Leser daran gewöhnen.
Also die Antwort auf die Frage "Ist das eine schlechte Praxis?" ist, dass es von Ihrer vereinbarten Kodierungskonvention abhängt, und was es dazu sagt.
Aber die Meta-Antwort ist, dass das Durchführen einer Code-Überprüfung ohne eine vereinbarte Codierungskonvention eine wirklich schlechte Idee ist. Wenn es keine Kodierungskonvention gibt, gibt es keine objektive Grundlage für die Überprüfung des Codestils. Sie werden mit einem schlechten Ergebnis enden.
Die wichtigsten Java-Sprachspezifikationen definieren in den Abschnitten 8.1.1, 8.3.1 und 8.4.3 folgenden Ablauf, den wir verwenden müssen:
Diese Reihenfolge müssen wir verwenden, wenn wir Code in Java schreiben;)
Tags und Links java code-conventions