Laut Ist es falsch , einen Booleschen Parameter zu verwenden Verhalten zu bestimmen? Ich weiß, wie wichtig es ist, keine booleschen Parameter zu verwenden, um ein Verhalten zu bestimmen, z.
Originalfassung
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
neue Version:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
Aber wie wäre es mit dem Fall, dass der boolesche Parameter verwendet wird, um Werte anstelle von Verhaltensweisen zu bestimmen? z.B:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
Ich versuche, das isHintOn-Flag zu entfernen und zwei separate Funktionen zu erstellen:
public void setHintOn(){
this.layer1.visible=true;
this.layer2.visible=false;
this.layer3.visible=true;
}
public void setHintOff(){
this.layer1.visible=false;
this.layer2.visible=true;
this.layer3.visible=false;
}
Die geänderte Version scheint jedoch weniger wartbar zu sein, weil:
Es hat mehr Codes als die Originalversion
Es kann nicht eindeutig gezeigt werden, dass die Sichtbarkeit von Layer2 der Hinweisoption entgegengesetzt ist
Wenn eine neue Ebene (zB: Ebene4) hinzugefügt wird, muss ich hinzufügen
this.layer4.visible=false;
und
this.layer4.visible=true;
in setHintOn () und setHintOff () getrennt
Meine Frage ist also, ob es immer noch empfehlenswert ist, diesen booleschen Parameter zu entfernen, wenn der boolesche Parameter nur zur Bestimmung von Werten verwendet wird, aber nicht für Verhaltensweisen (z. B. kein if-else für diesen Parameter).
setHint(boolean isHintOn)
als private Methode und fügen Sie public setHintOn
und setHintOff
Methoden hinzu, die bzw. setHint(true)
und aufrufen setHint(false)
.
setHint(true|false)
. Kartoffel-Potahto. Zumindest etwas wie setHint
und verwenden unsetHint
.
is
am Anfang. isValid
usw. Warum sollte man das für zwei Wörter ändern? Dabei liegt "natürlicher" im Auge des Betrachters. Wenn Sie es als englischen Satz aussprechen möchten, dann wäre es für mich natürlicher, "wenn der Hinweis auf" mit einem "eingeblendeten" steht.