Должен ли я поставить префикс моего метода set в «set», если он делает нечто большее, чем просто установка значения? - PullRequest
0 голосов
/ 02 февраля 2012

Например, у меня есть простой класс POJO с некоторыми свойствами. Что еще делают мои сеттеры, так это уведомляют слушателя изменения свойства в моем классе о запуске события изменения свойства. Они сеттеры или нет в этом контексте? Должен ли я назвать им что-то еще или достаточно добавить этот комментарий? Пример кода:

/**
 * This is a special setter which uses property change support.
 * @param engineerOnDue engineer
 */
public void setEngineerOnDue(String engineerOnDue) {
    propertyChangeSupport.firePropertyChange("engineerOnDue", this.engineerOnDue, this.engineerOnDue = engineerOnDue);
}

Ответы [ 6 ]

2 голосов
/ 02 февраля 2012

Все зависит от API, который вы хотите предоставить своему клиенту.Обычно клиенту не нужно знать реализацию метода, поэтому, если set-name охватывает побеждающую сторону на выборах: просто используйте его.

0 голосов
/ 02 февраля 2012

Нет, это все еще сеттер.Преимущество использования методов getter / setter по сравнению с открытыми полями состоит в том, что они позволяют вам делать больше, чем просто устанавливать поля.Он также скрывает внутренние компоненты от вызывающих абонентов класса, позволяя вам изменять функциональность так часто, как вам хочется, не беспокоясь о нарушении других частей вашего кода.

0 голосов
/ 02 февраля 2012

Помимо инкапсуляции, это основная причина, по которой используются установщики JavaBeans: возможность вызывать событие при каждом изменении свойства.Это определенно должен быть установщик.

Прочтите учебник по Java о JavaBeans .То, что вы пошли, это определить привязанное свойство в вашем бине.

0 голосов
/ 02 февраля 2012

ИМХО, весь смысл использования методов получения / установки вместо открытых методов состоит в том, чтобы позволить вам что-то делать при изменении свойств. Так что продолжай. Я бы даже не сказал клиенту, что я там что-то делаю, это не его бизнес, чтобы знать это.
Но, пожалуйста, НИКОГДА не занимайте много времени (проверка базы данных, доступ к сети): у пользователя будет разумное ожидание, что установщик будет быстрым.

0 голосов
/ 02 февраля 2012

Разве POJO - это не просто контейнер для хранения значений без логики?Возможно, вам следует запустить это событие из вашего сценария использования, а не из POJO ...

Чем вам даже не нужно думать о том, следует ли называть этот установщик сеттером.

0 голосов
/ 02 февраля 2012

Если вы и ваша команда довольны этим, оставьте это так.Я хотел бы создать два метода, простой установщик и другой, который устанавливает свойство (которое вызывает установщик в любом случае).Если вы не можете разделить операции, потому что они должны быть выполнены вместе.

...