Secondo È sbagliato per utilizzare un parametro booleano per determinare il comportamento? , conosco l'importanza di evitare l'utilizzo di parametri booleani per determinare un comportamento, ad esempio:
versione originale
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
nuova versione:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
Ma per quanto riguarda il caso in cui il parametro booleano viene utilizzato per determinare i valori anziché i comportamenti? ad esempio:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
Sto cercando di eliminare isHintOn flag e creare 2 funzioni separate:
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;
}
ma la versione modificata sembra meno mantenibile perché:
-
ha più codici rispetto alla versione originale
-
non può mostrare chiaramente che la visibilità di layer2 è opposta all'opzione di suggerimento
-
quando viene aggiunto un nuovo livello (ad esempio: layer4), devo aggiungere
this.layer4.visible=false;
e
this.layer4.visible=true;
in setHintOn () e setHintOff () separatamente
Quindi la mia domanda è, se il parametro booleano è usato per determinare solo i valori, ma non i comportamenti (es: no if-else su quel parametro), è ancora consigliabile eliminare quel parametro booleano?