ตามที่มันเป็นความผิดที่จะใช้พารามิเตอร์แบบบูลเพื่อตรวจสอบพฤติกรรม? ฉันรู้ถึงความสำคัญของการหลีกเลี่ยงการใช้พารามิเตอร์บูลีนเพื่อกำหนดพฤติกรรมเช่น:
รุ่นเดิม
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
เป็นต้นเหตุใดจึงต้องเปลี่ยนคำสองคำนี้ นอกจากนี้ "ดูเป็นธรรมชาติ" อยู่ในสายตาของคนดู หากคุณต้องการออกเสียงมันเป็นประโยคภาษาอังกฤษสำหรับฉันแล้วมันจะเป็นเรื่องธรรมดากว่าที่จะมี "ถ้าคำใบ้ใช้" กับ "the" tucked in