Згідно Чи неправильно використовувати булевий параметр для визначення поведінки? , Я знаю важливість уникати використання булевих параметрів для визначення поведінки, наприклад:
оригінальна версія
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 і створити дві окремі функції:
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;
}
але модифікована версія здається менш рентабельною, оскільки:
він має більше кодів, ніж оригінальна версія
це не може чітко показати, що видимість шару2 протилежна варіанту підказки
коли додається новий шар (наприклад: layer4), мені потрібно додати
this.layer4.visible=false;
і
this.layer4.visible=true;
у setHintOn () та setHintOff () окремо
Отже, моє запитання полягає в тому, що якщо булевий параметр використовується лише для визначення значень, але не поведінки (наприклад, немає цього параметра), рекомендується усунути цей булевий параметр?
setHint(boolean isHintOn)
як приватний метод та додайте public setHintOn
та setHintOff
методи, які відповідно викликають setHint(true)
та setHint(false)
.
setHint(true|false)
. Картопляний калій. Принаймні використовувати щось на кшталт setHint
і unsetHint
.
is
на початку. isValid
і т. д. То навіщо змінювати це на два слова? Крім того, "більш природне" є в очах глядача. Якщо ви хочете вимовити це як англійське речення, тоді для мене було б більш природно мати "якщо натяк на" з "за", що тут ".