Warum sind die Menschen so entschieden, jede Variable innerhalb einer Klasse "endgültig" zu machen? Ich glaube nicht, dass es einen wirklichen Vorteil bietet, wenn man lokale Variablen final hinzufügt oder wirklich alles andere als Konstanten verwendet und Variablen in anonyme innere Klassen übergibt.
Ich möchte keinen Flammenkrieg starten, ich möchte nur ehrlich wissen, warum das für manche Leute so wichtig ist. Fehle ich etwas?
Absicht. Andere Personen, die Ihren Code ändern, ändern keine Werte, die sie nicht ändern sollen.
Compiler-Optimierungen können vorgenommen werden, wenn der Compiler weiß, dass sich der Wert eines Feldes niemals ändert.
Wenn EVERY-Variable in einer Klasse final ist (wie Sie in Ihrem Beitrag darauf Bezug nehmen), dann haben Sie eine unveränderliche Klasse (solange Sie keine Referenzen auf veränderbare Eigenschaften anzeigen), was eine ausgezeichnete Methode ist Fadensicherheit.
Der Nachteil ist, dass
%Vor%Abgesehen von der offensichtlichen Verwendung zum Erstellen von Konstanten und zum Verhindern von Unterklasse / Überschreiben ist dies in den meisten Fällen eine persönliche Präferenz, da viele glauben, dass die Vorteile der "Zeigeprogrammiererabsicht" durch die tatsächliche Codelesbarkeit aufgewogen werden. Viele bevorzugen etwas weniger Ausführlichkeit.
Was Optimierungen betrifft, so ist das ein schlechter Grund, sie zu verwenden ( in vielen Fällen bedeutungslos ). Es ist die schlimmste Form der Mikrooptimierung und in den Tagen der JIT dient kein Zweck.
Ich würde vorschlagen, es zu benutzen, wenn Sie bevorzugen, nicht wenn Sie das sind, was Sie bevorzugen. Da es in vielen Fällen auf religiöse Argumente ankommt, macht euch keine Sorgen.
Es bedeutet, dass ich nicht erwarte, dass sich dieser Wert ändert, was eine kostenlose Dokumentation ist. Die Praxis ist, weil es klar die Absicht dieser Variable kommuniziert und den Compiler zwingt, dies zu überprüfen. Darüber hinaus kann der Compiler Optimierungen vornehmen.
Es gibt viele gute Gründe, das Finale zu verwenden, wie an anderer Stelle erwähnt. Ein Ort, an dem es sich nicht lohnt, IMO, sind Parameter einer Methode. Streng genommen addiert das Schlüsselwort hier einen Wert, aber der Wert ist nicht hoch genug, um der hässlichen Syntax zu widerstehen. Ich würde es vorziehen, diese Art von Informationen durch Unit-Tests auszudrücken.