Según ¿Está mal usar 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é tal el caso de que el parámetro booleano se use para determinar valores en lugar de comportamientos? p.ej:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
Estoy tratando de eliminar el indicador 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 mantenible 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 solo para determinar valores, pero no comportamientos (por ejemplo: no if-else en ese parámetro), ¿todavía se recomienda eliminar ese parámetro booleano?
setHint(boolean isHintOn)
como privada método, y añadir pública setHintOn
y setHintOff
métodos que llaman, respectivamente, setHint(true)
y setHint(false)
.
setHint(true|false)
. Potahto de papa. Al menos usa algo como setHint
y unsetHint
.
is
al principio. isValid
etc. Entonces, ¿por qué cambiar eso por dos palabras? Además, "más natural" está en el ojo del espectador. Si desea pronunciarlo como una oración en inglés, entonces para mí sería más natural tener "si la pista está activada" con "el" escondido.