Theo Có sai không khi sử dụng tham số boolean để xác định hành vi? , Tôi biết tầm quan trọng của việc tránh sử dụng các tham số boolean để xác định hành vi, ví dụ:
phiên bản gốc
public void setState(boolean flag){
if(flag){
a();
}else{
b();
}
c();
}
phiên bản mới:
public void setStateTrue(){
a();
c();
}
public void setStateFalse(){
b();
c();
}
Nhưng làm thế nào về trường hợp tham số boolean được sử dụng để xác định giá trị thay vì hành vi? ví dụ:
public void setHint(boolean isHintOn){
this.layer1.visible=isHintOn;
this.layer2.visible=!isHintOn;
this.layer3.visible=isHintOn;
}
Tôi đang cố gắng loại bỏ cờ isHintOn và tạo 2 chức năng riêng biệt:
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;
}
nhưng phiên bản sửa đổi có vẻ ít bảo trì hơn vì:
Nó có nhiều mã hơn phiên bản gốc
rõ ràng không thể thấy rằng khả năng hiển thị của layer2 ngược với tùy chọn gợi ý
Khi một lớp mới (ví dụ: layer4) được thêm vào, tôi cần thêm
this.layer4.visible=false;
và
this.layer4.visible=true;
thành setHintOn () và setHint Offer ()
Vì vậy, câu hỏi của tôi là, nếu tham số boolean chỉ được sử dụng để xác định các giá trị, nhưng không phải là hành vi (ví dụ: no if-other trên tham số đó), liệu có còn nên loại bỏ tham số boolean đó không?
setHint(boolean isHintOn)
như một cá nhân phương pháp, và thêm công cộng setHintOn
và setHintOff
phương pháp tương ứng gọi setHint(true)
và setHint(false)
.
setHint(true|false)
. Khoai tây khoai tây. Ít nhất là sử dụng một cái gì đó như setHint
và unsetHint
.
is
ở đầu. isValid
vv Vậy tại sao thay đổi điều đó cho hai từ? Bên cạnh đó, "tự nhiên hơn" là trong mắt của kẻ si tình. Nếu bạn muốn phát âm nó như một câu tiếng Anh, thì đối với tôi sẽ là tự nhiên hơn nếu "gợi ý được bật" với một "the" được nhét vào.