2016-09-26 3 views
2

Ich habe eine Klasse USER, die Instanzvariablen mit Standardwerten hat. wie geben unterIst es gut, eine Instanzvariable einem Wert zugewiesen zu haben, stattdessen im Konstruktor

public class User{ 
    private String username=""; 
    private String password = ""; 
    private Boolean isValidUser = true; 
    private Boolean email = "[email protected]" 
    ........ 
} 

jetzt habe ich meine Klasse geändert haben wie

public class User{ 
     private String username; 
     private String password; 
     private Boolean isValidUser; 
     private Boolean email 
     ........ 

     public User(){ 
     email = "[email protected]"; 
     isValidUser = true; 
     ....... 
     } 
    } 

ich die Standardwerte im Konstruktor obwohl zu halten ist eine gute Übung.

ich weiß, es ist dumm Frage = D aber möchte deine Meinung wissen.

+0

persönlich würde ich es nicht machen, weil es so aussieht, als würde ein Standardkonstruktor hier keinen Sinn ergeben. Ich bleibe lieber bei dem Konstruktor, der Werte hat, und das war's. Aber wie Sie vielleicht bemerkt haben, ist dies in hohem Maße auf Opportunity basiert und ich denke, es wird geschlossen werden, als ob – SomeJavaGuy

+0

Im Falle von mehreren Konstruktoren, könnte es vorzuziehen, die Felder direkt anstelle in allen Konstruktoren zu initiieren. – Tokazio

+2

Zugehöriges, mögliches Duplikat: http://stackoverflow.com/questions/1994218/should-i-instantiate-instance-variables-on-de-claration-or-the-constructor – Arc676

Antwort

2

Der Punkt ist, dass Sie nicht Klassen "wie Sie gehen" niederlegen. Das genaue Design einer Klasse ist nur eine kleine Facette in Ihrem gesamten Design.

Von DDD kommend (domain-driven design) ist die allererste Sache zu prüfen, die Modell, die Sie beabsichtigen zu bauen. Bedeutung: Sie erstellen eine Benutzer Klasse für die Modellierung von Benutzern innerhalb eines Systems. Dies bedeutet, dass Sie (und alle anderen Personen, die an diesem Projekt beteiligt sind) ein sehr klares Verständnis davon benötigen, was ein "Benutzer wirklich ist".

Beispiel: Es scheint, dass keines Ihrer Felder final ist. Aber ich bin mir ziemlich sicher: In jedem vernünftigen Modell von Benutzern wird ein Benutzer bestimmte Eigenschaften haben, die nie ändern; zum Beispiel eine bestimmte Benutzer-ID. Und andererseits; Es scheint sehr falsch zu sein, einigen neuen Benutzern eine "Standard" -E-Mail-Adresse zuzuweisen; und diese Benutzer für "gültig" erklären. Im Gegenteil.

Was ich sage im Wesentlichen ist: Sie sollten sich darauf konzentrieren, zuerst ein konsistentes Modell zu erstellen. Und dann, wenn Sie wirklich verstehen, was Ihr System mit "Benutzerobjekte" macht und welche Eigenschaften diese Benutzer haben; dann schauen Sie in die vielen möglichen Muster, wie Sie später solche Objekte tatsächlich erstellen.

Ihr Ansatz besteht darin, Ihr System anhand der Details Ihrer Implementierung zu definieren. Und wie ausgekleidet - das ist keine gute Idee.

Verwandte Themen