Según ¿Está mal? utilizar un parámetro booleano para determinar el comportamiento? , sé la importancia de evitar el uso de parámetros booleanos para determinar un comportamiento, por ejemplo:
versión original
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
nueva versión:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
¿Pero qué hay del caso de que el parámetro booleano se use para determinar valores en lugar de comportamientos? por ejemplo:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
Estoy tratando de eliminar la marca isHintOn y crear 2 funciones 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;
}
pero la versión modificada parece menos fácil de mantener porque:
-
tiene más códigos que la versión original
-
no puede mostrar claramente que la visibilidad de layer2 es opuesta a la opción de sugerencia
-
cuando se agrega una nueva capa (por ejemplo: layer4), necesito agregar
this.layer4.visible=false;
y
this.layer4.visible=true;
en setHintOn () y setHintOff () por separado
Entonces, mi pregunta es, si el parámetro booleano se usa para determinar solo los valores, pero no los comportamientos (por ejemplo: no if-else en ese parámetro), ¿todavía se recomienda eliminar ese parámetro booleano?