Могу ли я написать логику проверки в методах setter? - программирование

Могу ли я написать логику проверки в методах setter?

Используются ли методы setter для установки значения атрибутов по мере его передачи в качестве аргумента? Можем ли мы написать некоторую логику проверки до назначения значения атрибутам?

4b9b3361

Ответ 1

Да, логика проверки определенно приемлема.

Следует отметить, что если у вас есть обширная проверка, вы можете захотеть извлечь ее в определенную службу проверки подлинности. Но для простых проверок вы можете это сделать безопасно.

Вся идея использования геттеров и сеттеров заключается в том, что никто не будет иметь прямого доступа к вашим полям. Если вы просто хотели установить/получить значение, вы можете сделать их public.

Вместо этого мы используем сеттеры для проверки входящих данных и видим, соответствует ли он установленным правилам.

Эта концепция также называется "Инкапсуляция", краеугольным камнем объектно-ориентированного программирования.

Ответ 2

Да, вы можете добавить логику проверки в свои атрибуты сеттера, прежде чем назначать значения. Фактически, вы должны это сделать, если возможно, что нежелательные значения могут быть отправлены в сеттеры.

Ответ 3

На самом деле рекомендуется проверять ввод (проверьте, соответствует ли он вашей абстракции данных) вашему методу setter, поэтому да, вы можете.

Ответ 4

Конечно. Вы можете включить проверку. Это приемлемо, но не обязательно. Вам просто нужно принять во внимание, что если вы не подтвердите его, то любые значения попытаются получить переменную (удовлетворяющую требованиям типа данных).

В принципе, если у вас

public void setNickname(String nick)
{
    this.nickname = nick;
}

и вы хотите проверить его, вы можете либо сделать это внутри сеттера - например

public void setNickname(String nick)
{
    if(nick.matches("[a-zA-Z]+"){ // only letters
        this.nickname = nick;
    }else{
        // react
    }
}

или вне установки, прежде чем использовать его

if(nick.matches("[a-zA-Z]+"){ // only letters
    account.setNickname(nick);
}

или вы можете использовать метод для его проверки или даже отдельный класс проверки. Есть много возможностей.

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

Ответ 5

Конечно, нет ничего плохого в том, что установщики принимают только допустимые значения.

Ответ 6

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

Вы также должны рассмотреть возможность удаления сеттеров и использования конструктора с помощью валидации или строителя в версии Джошуа Блоха

Ответ 7

Абсолютно ничего не мешает вам выполнять какую-либо другую операцию внутри сеттера свойства. Вы можете сделать что-либо от проверки до установки значения другого свойства и т.д. И т.д. То есть не сказать, что вам следует. Используйте свой здравый смысл и здравый смысл, чтобы решить, что там положить. Если сеттер заполнен неиспользуемыми строками кода, вы должны задать вопрос о своей структуре программы...