Göre bu davranışını belirlemek için bir boolean parametresini kullanmak yanlış mı? , Bir davranışı belirlemek için boolean parametreleri kullanmaktan kaçının önemini biliyorum, örneğin:
Orijinal versiyon
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
Yeni sürüm:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
Fakat boolean parametresinin davranışlar yerine değerleri belirlemek için kullanılması durumunda? Örneğin:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
İsHintOn bayrağını kaldırmaya çalışıyorum ve 2 ayrı fonksiyon oluşturmaya çalışıyorum:
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;
}
ancak değiştirilmiş sürüm daha az bakım gerektiriyor çünkü:
Orijinal versiyondan daha fazla kod içeriyor
katman 2'nin görünürlüğünün ipucu seçeneğinin zıttı olduğunu açıkça gösteremez.
yeni bir katman (örneğin: layer4) eklendiğinde, eklemem gerekiyor
this.layer4.visible=false;
ve
this.layer4.visible=true;
setHintOn () ve setHintOff () 'a ayrı ayrı
Öyleyse benim sorum, eğer boolean parametresi sadece değerleri belirlemek için kullanılıyorsa, fakat davranışlarda bulunmuyorsa (örneğin: bu parametrede başka bir if yoksa), hala bu boolean parametresini ortadan kaldırmak için tavsiye edilir mi?
setHint(boolean isHintOn)
olarak tanımlayın ve sırasıyla ve ile çağıran genel ve ekleyin . setHintOn
setHintOff
setHint(true)
setHint(false)
setHint(true|false)
. Patates patates En azından setHint
ve gibi bir şey kullanın unsetHint
.
is
en baştan yazarsınız . isValid
peki neden iki kelimeyle bunu değiştirdin? Ayrıca, "daha doğal" bakanın gözündedir. . Benim için daha sonra bir İngiliz cümle olarak telaffuz istiyorsanız bir "" sıkışmış ile "ipucu açıksa" olması daha doğal olurdu