Лучший способ использования сеттеров в ООП - PullRequest
2 голосов
/ 11 января 2012

Давайте предположим, что у меня есть класс, и всякий раз, когда я устанавливаю определенные атрибуты bla, foo (которые могут быть установлены внешне и внутренне), я хочу вызывать другой метод класса, давайте назовем его onChangeFunction().

Будет ли хорошим способом просто вызвать onChangeFunction() при непосредственной установке внутренних значений, например,

function someFunction()
  // Some Calculations here ...
  this.bla = some_value;
  this.onChangeFunction()
end

или было бы лучше также установить эти переменные bla и foo ТОЛЬКО с помощью внутренних методов установки, поскольку с ним инициируется определенное действие, и, таким образом, это будет более четко организованный код.

Я даже пошел на шаг дальше: допустим, мне не нужен внешний установщик, который можно вызывать извне (тип доступа = public), но было бы неплохо изобрести private установщик, чтобы сделать тот же подход и использовать только сеттер из-за инициированного действия набора? РЕДАКТИРОВАТЬ : Я имею в виду следующее: даже если бы у меня не было общедоступного установщика (потому что не должно быть общедоступного доступа для установки переменной, потому что это только внутренняя переменная), было бы все еще хорошо иметь сеттер, который private -только только из-за триггера?

Заранее спасибо!

1 Ответ

1 голос
/ 11 января 2012

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

Вы не указываете, какие языки программирования вы имеете в виду, но некоторые языки позволяют определять «свойство», которое выглядит как элемент данных, но всегда вызывает функцию, когда делается попытка изменить его. См., Например, property и др. в Python.

Что касается вашего второго вопроса, я не думаю, что есть что-то плохое в установщике private.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...