動作を決定するためにブール値パラメーターを使用するのは間違っていますか?、ブールパラメータを使用して動作を決定することを避けることの重要性を知っています。たとえば:
元のバージョン
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
新しいバージョン:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
しかし、動作の代わりにブール値パラメーターを使用して値を決定する場合はどうでしょうか?例えば:
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の可視性がヒントオプションの反対であることを明確に示すことはできません
新しいレイヤー(例:layer4)が追加されたら、追加する必要があります
this.layer4.visible=false;
そして
this.layer4.visible=true;
setHintOn()およびsetHintOff()に個別に
だから私の質問は、ブールパラメータが値のみを決定するために使用され、動作ではない場合(たとえば、そのパラメータのif-elseなし)、そのブールパラメータを削除することはまだ推奨されていますか?
setHint(boolean isHintOn)
は、プライベートメソッドとして定義し、それぞれとを呼び出すパブリックメソッドsetHintOn
とsetHintOff
メソッドを追加setHint(true)
しsetHint(false)
ます。
setHint(true|false)
。じゃがいもポタート。少なくとも使用のようなものをsetHint
とunsetHint
。
is
最初に記述します。isValid
など。では、なぜそれを2つの単語に変更するのでしょうか。その上、「より自然」は見る人の目にあります。。あなたは私のために、その後、英語の文としてそれを発音したい場合は、「」に隠れて「ヒントが上にある場合は、」持っているより自然だろう