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