Это сеттер "зло" - PullRequest
       34

Это сеттер "зло"

3 голосов
/ 25 февраля 2009

Много говорят о том, что добытчики и сеттеры являются «злыми», а что нет.

Мой вопрос: следующий сеттер - это зло? (остальная часть класса для краткости опущена)

int balance

public void deposit(int amount)  
{  
    this.balance += amount;  
}

Этот класс эмулирует банкомат. В Великобритании есть несколько банкоматов, которые позволяют как вносить, так и снимать деньги, поэтому этот объект нуждается в способе изменения своего состояния (баланса). Является ли этот сеттер «злым»?

Ответы [ 12 ]

0 голосов
/ 25 февраля 2009

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

0 голосов
/ 25 февраля 2009

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

...