Was sind Ihre Gedanken über die Methode Gültigkeitsbereich von Konstanten?
Beispiel:
public void doSomething() {
final double MIN_INTEREST = 0.0;
//...
}
Persönlich, ich würde lieber sehen, diese substitution Konstanten deklariert, die statisch in der Klasse.
Ich glaube, ich bin auf der Suche nach einer "Industrie Sicht" auf die Sache.
- Gibt es einen memory-Nutzung Vorteil der Deklaration der Konstanten in der Klasse, im Gegensatz zu der Methode Stufe, wenn die Klasse ist ein Singleton? Irgendwelche Gedanken: @Chris Cudmore
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Ausgangsposition ist, dass jede variable oder Konstante deklariert/initialisiert, wie nahe es der erste Einsatz als möglich/praktisch (also brechen nicht eine logische code-block in der Hälfte, genau zu erklären, ein paar Zeilen näher), und Gültigkeitsbereich als fest wie möglich an. - Es sei denn, Sie können mir einen verdammt guten Grund, warum es anders sein sollte.
Beispielsweise eine Methode Gültigkeitsbereich endgültig nicht sichtbar in die öffentliche API. Manchmal ist dieses bit der information konnte sein quit nützlich, um die Benutzer Ihrer Klasse, und sollte verschoben werden.
In dem Beispiel, das Sie Gaben, bei der Frage würde ich sagen, dass MIN_INTEREST ist wahrscheinlich eines jener Stücke von Informationen, die ein Benutzer möchte, um Ihre Hände auf, und es sollte eingeschränkt werden, um die Klasse, nicht die Methode. (Obwohl, es gibt keinen Kontext zu dem Beispiel-code, und meine Vermutung könnte vollkommen falsch sein.)
Ich würde denken, dass Sie sollten nur setzen Sie Sie in der Klasse, wenn Sie verwendet werden, indem mehrere Methoden. Wenn es nur bei dieser Methode dann, dass sieht gut auf mich.
Technisch gibt es keine solche Sache wie eine "Methode Gültigkeitsbereich Konstanten" in Java. Was du meinst ist einfach eine Finale lokale variable; ein zerstört mit jeder Methode invocation.
http://www.java-tips.org/java-se-tips/java.lang/how-do-i-declare-a-constant-in-java.html
Information hiding und Modularität sind die wichtigsten Grundsätze und schmalen Erfassungsbereich ist besser, Informationen zu verstecken. Wenn die Konstante wird nur benötigt, durch die Methode, das Versteck ist gut. Wenn die Konstante ist nützlich anderswo, bringen Sie es aus, um einen breiteren Bereich, aber nur so weit wie nötig.
Sind Sie wahrscheinlich besorgt, weil das ist eine Konstante, und daher kann es scheinen, gehören einige Globale Eigenschaften-Tabelle. Vielleicht tut es. Vielleicht ist es noch nicht. Ihr Anliegen ist gültig, aber es gibt keine eine beste Ort für alle Konstanten.
Habe ich diese Methode verwendet Gültigkeitsbereich von Konstanten, die mich aber jeder so oft ein Kollege down-mod, die es während der code-reviews. Auch diese Kollegen sind nicht in Lesen/schreiben von open-source -, aber Sie werden verwendet, um enterprise-software.
Ich erkläre Ihnen, dass es NICHT sinnvoll eine Klasse verwenden Pegel konstant, wenn es innerhalb einer einzigen Methode, aber ich habe mehr als 1 Kollege Bestand darauf, dass es nach OBEN verschoben werden.
Ich in der Regel erfüllen, da bin ich nicht so starr, es sei denn, es wirkt sich auf die Lesbarkeit und/oder der Leistung.
Habe ich eine andere nehmen auf dieser: IMHO ist es besser, um Sie auf Datei/Klasse Anwendungsbereich vor allem, wenn Sie arbeiten in teams, deshalb: sagen Sie beginnen mit einem kleinen Stück code...
und andere Mitglieder der man-Teams erweitern Sie die Klasse mit ganze Reihe von Methoden und jetzt die Klasse ist eine wunderbare
500 lines
/50 methods
giant-Klasse. Stellen Sie sich die Erfahrung von einem Ingenieur, der versucht, das hinzufügen einer neuen Methode mit einem Konstanten, Sie müssen1
scan der ganzen Klasse Suche nach Konstanten, die entsprechend Ihrer Notwendigkeit,2
bewegen Sie die Konstante zu Klasse Anwendungsbereich in der Hoffnung, dass es keine Konflikte mit vorhandenen code und3
fügen Sie auch Ihre Methode.Wenn Sie stattdessen fügen Sie alle Konstanten in der Datei/Klasse Anwendungsbereich zu beginnen mit, haben die Ingenieure eine
1
einzigen Ort zu suchen, vorhandene Konstanten und2
leiten einige Konstanten, die von anderen, wo es Sinn macht. (zum Beispiel, wenn Sie eine Konstante fürpi
können Sie auch wollen, definieren Sie eine neue Konstante mit einem Wert vonpi/2
).Den Grund, warum Sie definieren können, eine final-variable an eine Klasse oder Methode (lokalen) Ebene ist es, weil, können Sie überschreiben die globalen statischen Konstanten innerhalb der (lokalen) Methode.
Beispiel:
Ist die Ausgabe:
Also deine Frage macht keinen Sinn.