Menurut Apakah salah menggunakan parameter boolean untuk menentukan perilaku? , Saya tahu pentingnya menghindari menggunakan parameter boolean untuk menentukan perilaku, misalnya:
versi asli
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
versi baru:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
Tetapi bagaimana dengan kasus bahwa parameter boolean digunakan untuk menentukan nilai alih-alih perilaku? misalnya:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
Saya mencoba menghilangkan flag isHintOn dan membuat 2 fungsi terpisah:
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;
}
tetapi versi yang dimodifikasi tampaknya kurang dapat dipelihara karena:
ini memiliki lebih banyak kode daripada versi aslinya
tidak dapat dengan jelas menunjukkan bahwa visibilitas layer2 berlawanan dengan opsi petunjuk
ketika layer baru (mis .: layer4) ditambahkan, saya perlu menambahkan
this.layer4.visible=false;
dan
this.layer4.visible=true;
ke dalam setHintOn () dan setHintOff () secara terpisah
Jadi pertanyaan saya adalah, jika parameter boolean digunakan untuk menentukan nilai saja, tetapi bukan perilaku (misalnya: tidak ada jika-lain pada parameter itu), apakah masih disarankan untuk menghilangkan parameter boolean itu?
setHint(boolean isHintOn)
sebagai pribadi , dan tambahkan metode publik setHintOn
dan setHintOff
yang masing-masing memanggil setHint(true)
dan setHint(false)
.
setHint(true|false)
. Potahto kentang. Setidaknya gunakan sesuatu seperti setHint
dan unsetHint
.
is
di awal. isValid
dll. Jadi mengapa mengubahnya menjadi dua kata? Selain itu, "lebih alami" ada di mata yang melihatnya. Jika Anda ingin mengucapkannya sebagai kalimat bahasa Inggris, maka bagi saya akan lebih alami untuk memiliki "jika petunjuknya ada pada" dengan "yang" dimasukkan.