根据使用布尔参数确定行为是否错误?,我知道避免使用布尔参数来确定行为的重要性,例如:
原始版本
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
新版本:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
但是,使用boolean参数来确定值而不是行为的情况如何呢?例如:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
我试图消除isHintOn标志并创建2个单独的函数:
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;
}
但修改后的版本似乎难以维护,原因是:
它具有比原始版本更多的代码
它不能清楚地表明layer2的可见性与hint选项相反
当添加一个新层(例如:layer4)时,我需要添加
this.layer4.visible=false;
和
this.layer4.visible=true;
分别进入setHintOn()和setHintOff()
所以我的问题是,如果布尔参数仅用于确定值,而不用于确定行为(例如:在该参数上没有if-else),是否仍建议消除该布尔参数?
setHint(boolean isHintOn)
为私有方法,并添加分别调用和的public setHintOn
和setHintOff
方法。setHint(true)
setHint(false)
setHint(true|false)
。马铃薯马铃薯。至少使用类似setHint
和的东西unsetHint
。
is
在开头写。isValid
等等。为什么要改成两个字呢?此外,情人眼中的“更自然”。如果你想,它的发音是英语句子,那么对我来说会更自然的事“如果提示的是”有“的”已塞入。