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?