2017-08-28 1 views
0

Ich habe einen Code gelesen, der von einem Kollegen geschrieben wurde, der mein Senior ist. In einer Unit-Test-Klasse, machte er Gebrauch von private final Klassenvariablen wie folgt aus:Java-Namenskonvention für 'private final' Klassenfelder und deren Verwendung

public class SomeProcessingServiceUT { 
    private final String modelNumber = "ABC01"; 
    private final String serialNumber = "000002"; 
    private final String PrimaryId = "15033520583"; 
    private final String CheckinTime ="20021010:00-05"; 
..... 
} 

Und alles, was er tat, war, alle diese Variablen wie this.modelNumber usw. und nichts anderes erreichbar.

Ich möchte seine Absicht in Frage stellen, warum er keine reinen Konstanten deklarierte, indem er statische benutzte und warum er solche gemischten Namen verwendete. Aber ich habe daran gedacht, meine Zweifel auch hier mit der Gemeinde zu teilen. Das ist ein bisschen verwirrend. Jede Weisheit wird hilfreich sein.

+1

https://codereview.stackexchange.com – nullpointer

+2

Haben Sie ihn gefragt? –

+0

@Jacob Ich werde ihn bald fragen. Aber ich möchte zuerst wissen, ob es eine schlechte Übung ist oder nicht? – user2918640

Antwort

-1

Das Schlüsselwort static macht es nicht zu einer Konstante, es wird für Variablen verwendet, die an die Klasse und nicht an das Objekt angehängt sind. Um es ganz einfach zu sagen: Der Wert der Variablen ist für jedes von Ihnen erstellte Objekt gleich. Die Sache ist, dass Sie den Wert dieser Variablen ändern können, wenn Sie classname.variable sagen, daher ist es keine konstante Variable.

Im Allgemeinen möchten Sie die Verwendung von statischem nicht vermeiden, es ist nicht notwendig schlechte Programmierung, aber wenn Sie absolut nicht brauchen, sollte es nicht verwendet werden. Außerdem gibt es kaum Situationen, in denen Sie eine statische Variable benötigen und in den meisten Fällen mit einem besseren Klassendesign hätten vermieden werden können.

Um Ihre Frage zu beantworten, nein, es würde nicht viel Sinn machen, diese Variable als statisch zu deklarieren, aber ich könnte hier falsch liegen, da ich nicht weiß, was er sonst mit der Klasse im Allgemeinen machen möchte.

+0

Jemand hat Ihre Antwort abgelehnt. Ich stimme Ihnen zu, dass statische Daten nicht wegen Speicherlecks missbraucht werden sollten. Aber gegen das, was Sie gesagt haben, wird static zusammen mit private & final verwendet, um anwendungsweite Konstanten zu erstellen, wenn zahlreiche Objektinstanzen sie verwenden. – user2918640

+0

Ja, ich machte einen Fehler dort natürlich können Sie statische verwenden, um eine Konstante zu erstellen, aber was ich eigentlich meinte war, dass das Schlüsselwort statische macht es nicht zu einer konstanten Variable, die die Aufgabe des endgültigen ist. –

Verwandte Themen