In meinen früheren Jahren der Entwicklung in C++, weiß ich, dass es eine Konvention war, Ihre Variablen immer mit etwas zu initialisieren.Java erste Zuordnung
Ich habe diese Konvention mit mir nach Java getragen, und wirklich jede andere Programmiersprache, die ich benutze.
Ich benutze IntelliJ IDEA, und ich bin ganz zufrieden damit, und in der Regel seine Programmierrichtlinien und Warnungen folgen, jedoch habe ich diese Warnung:
public String getText(By by) {
String text = null; // Variable `text` initializer `null` is redundant
WebElement ele = findElement(by);
highlightIfDemoMode(ele);
String tagName = ele.getTagName();
if (tagName.equals("input") ||
tagName.equals("select"))
// For field elements, the text is actually held in values, not the text.
text = ele.getAttribute("value");
else
text = ele.getText();
return text;
}
Jetzt offensichtlich, in Java,
String text;
// is the *exact* same thing as..
String text = null;
Wenn man bedenkt, dass IntelliJ sehr gut darin ist, Programmierkonventionen zu befolgen, sollte ich diese Konvention von mir vernachlässigen, um meine Variablen nicht in Java zu initialisieren? Ich denke, es ist viel sauberer, aber wenn die Konventionen von Java mir das nicht sagen, werde ich es nicht tun.
Könnte mir jemand sagen, ob es besser Praxis ist zu initialisieren, oder einfach nur folgern, dass es
Beachten Sie jedoch, dass Sie das Konstrukt in eine separate Methode extrahieren und dieses eher hässliche Muster vermeiden können. – biziclop
@biziclop können Sie alles in eine separate Methode extrahieren, um jedes Muster zu vermeiden (z. B. doppelt verschachtelte für Schleifen mit einem Break-Break). Ich denke, es ist vernünftig, das nicht aus der Welt zu schaffen, vor allem, wenn Sie es von der Top-Level-Methode aus visuell sehen wollen, wenn Verbindungen ausgecheckt werden. – djechlin
Mir wurde gesagt, dass die Erstellung einer Variablen 'final' dem Compiler/JVM erlaubt, einige Optimierungen vorzunehmen, die er nicht anders machen könnte, wie zum Beispiel Inlining? – Stewart