Selon Est-il erroné d’utiliser un paramètre booléen pour déterminer le comportement? , Je connais l’importance d’éviter d’utiliser des paramètres booléens pour déterminer un comportement, par exemple:
version originale
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
nouvelle version:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
Mais qu'en est-il du cas où le paramètre booléen est utilisé pour déterminer des valeurs plutôt que des comportements? par exemple:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
J'essaie d'éliminer le drapeau isHintOn et de créer 2 fonctions distinctes:
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;
}
mais la version modifiée semble moins maintenable car:
il a plus de codes que la version originale
il ne peut pas clairement montrer que la visibilité de la couche 2 est opposée à l'option de conseil
quand un nouveau calque (par exemple: layer4) est ajouté, je dois ajouter
this.layer4.visible=false;
et
this.layer4.visible=true;
dans setHintOn () et setHintOff () séparément
Ma question est donc la suivante: si le paramètre booléen est utilisé pour déterminer des valeurs uniquement, mais pas des comportements (par exemple: no if-else sur ce paramètre), est-il toujours recommandé d’éliminer ce paramètre booléen?
setHint(boolean isHintOn)
tant que méthode privée et ajoutez public setHintOn
et les setHintOff
méthodes qui appellent respectivement setHint(true)
et setHint(false)
.
setHint(true|false)
. Pomme de terre pomme de terre. Au moins utiliser quelque chose comme setHint
et unsetHint
.
is
au début. isValid
etc. Alors pourquoi changer cela pour deux mots? En outre, "plus naturel" est dans l'oeil du spectateur. Si vous voulez le prononcer comme une phrase anglaise, alors il serait plus naturel pour moi d'avoir "si l'indication est allumée" avec "le" caché dedans.