De acordo com É errado usar um parâmetro booleano para determinar o comportamento? , Eu sei a importância de evitar o uso de parâmetros booleanos para determinar um comportamento, por exemplo:
versão original
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
nova versão:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
Mas e o caso em que o parâmetro booleano é usado para determinar valores em vez de comportamentos? por exemplo:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
Estou tentando eliminar o sinalizador isHintOn e criar 2 funções separadas:
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;
}
mas a versão modificada parece menos sustentável porque:
tem mais códigos que a versão original
não pode mostrar claramente que a visibilidade da camada2 é oposta à opção de dica
quando uma nova camada (por exemplo: layer4) é adicionada, preciso adicionar
this.layer4.visible=false;
e
this.layer4.visible=true;
em setHintOn () e setHintOff () separadamente
Portanto, minha pergunta é: se o parâmetro booleano for usado apenas para determinar valores, mas não comportamentos (por exemplo: nenhum if-else nesse parâmetro), ainda é recomendável eliminar esse parâmetro booleano?
setHint(boolean isHintOn)
como um privado método, e adicionar pública setHintOn
e setHintOff
métodos que respectivamente chamam setHint(true)
e setHint(false)
.
setHint(true|false)
. Potahto de batata. Pelo menos use algo como setHint
e unsetHint
.
is
no início. isValid
etc. Então, por que mudar isso por duas palavras? Além disso, "mais natural" está nos olhos de quem vê. Se você quer pronunciar-lo como uma frase Inglês, em seguida, para mim seria mais natural ter "se a dica é sobre" com um "a" dobrado.