Напр.
boolean isCurrent = false;
Як ви називаєте його геттер і сетер?
Напр.
boolean isCurrent = false;
Як ви називаєте його геттер і сетер?
Відповіді:
Припустимо, у вас є
boolean active;
Метод аксесуарів був би
public boolean isActive(){return this.active;}
public void setActive(boolean active){this.active = active;}
Дивитися також
hasCustomName
, тепер що мені потрібно назвати для методів getter та setter ? Хіба setHasCustomName[setter]
і hasCustomName[getter]
добре?
public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
http://geosoft.no/development/javastyle.html#Specific
is
префікс слід використовувати для булевих змінних та методів.
isSet
,isVisible
,isFinished
,isFound
,isOpen
Це умова іменування для булевих методів та змінних, які Sun використовує для основних пакетів Java. Використання префікса is вирішує загальну проблему вибору поганих булевих імен, таких як статус або прапор. isStatus або isFlag просто не підходить, і програміст змушений обирати більш значущі імена.
Методи встановлення булевих змінних повинні мати префікс як у:
void setFound(boolean isFound);
Існує кілька альтернатив префіксу is, який краще підходить в деяких ситуаціях. Ці префікси є, можуть і повинні:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
hasData
, як би виглядав сетер? Звичайно, setData(bool hasData)
мені страшно виглядає неправильно ...
has
, can
, should
префікси не є частиною специфікації. Довідкова специфікація JavaBeans 1.01, розділ 8.3.
boolean isIsCurrent(){...}
іншому випадку рамки, які використовуються для деріаріалізації об'єкта, скаржився getter not found for property isCurrent
.
Для імені поля isCurrent
правильне іменування getter / setter - це setCurrent()
/ isCurrent()
(принаймні, так вважає Eclipse), що дуже заплутано і може бути простежено до основної проблеми:
Ваше поле не слід називати isCurrent
в першу чергу. Є чи це дієслово і дієслова є невідповідними для подання стану об'єкта. Використовуйте замість цього прикметник, і раптом ваші імена гетьер / сетер матимуть більше сенсу:
private boolean current;
public boolean isCurrent(){
return current;
}
public void setCurrent(final boolean current){
this.current = current;
}
get
префікс під час отримання Boolean
vs is
дляboolean
Я вірю, що це було б:
void setCurrent(boolean current)
boolean isCurrent()
Може, саме час почати переглянути цю відповідь? Особисто я б голосувати за setActive()
і unsetActive()
(варіанти можуть бути setUnActive()
, notActive()
,disable()
і т.д. в залежності від контексту) , так як «SetActive» означає , що ви дозволите його в будь-який час, що ви цього не робите. Це свого роду лічильник інтуїтивно зрозуміти "setActive", але фактично видалити активний стан.
Інша проблема полягає в тому, що ви не можете прослуховувати конкретно подію SetActive CQRS, вам потрібно буде прослухати "setActiveEvent" і визначити, що слухач, який був, насправді встановлений активним чи ні. Або, звичайно, визначте, яку подію потрібно зателефонувати під час дзвінка, setActive()
але це суперечить принципу розділення проблем.
Добре читайте про це статтю FlagArgument Мартіна Фаулера: http://martinfowler.com/bliki/FlagArgument.html
Однак я походжу з фонового режиму PHP і бачу, як ця тенденція все більше приймається. Не впевнений, скільки це живе з розвитком Java.
private boolean current;
public void setCurrent(boolean current){
this.current=current;
}
public boolean hasCurrent(){
return this.current;
}
has
використовується для BO або такої послуги з деякою обробкою, тоді як для POJO це is
. і будь ласка, додайте опис вашої відповіді.
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()
Для булевих можна також використовувати
public boolean isCurrent()
Як сетер, як щодо:
// setter
public void beCurrent(boolean X) {
this.isCurrent = X;
}
або
// setter
public void makeCurrent(boolean X) {
this.isCurrent = X;
}
Я не впевнений, чи мають ці найменування сенс для носіїв англійської мови.