Почему функция «Set ()» лучше, чем изменение публичной переменной? - PullRequest
1 голос
/ 27 февраля 2012

Это меня сейчас немного беспокоит:)

Предположим, у нас есть переменная - почему лучше писать функцию Set, чем просто модифицировать данные переменной (и установить переменную общедоступной, а не частной)?

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

Ответы [ 3 ]

7 голосов
/ 27 февраля 2012

Иногда при установке переменной вы можете захотеть сделать что-то еще с заданным значением, кроме мгновенного помещения его в переменную класса: например, вы можете захотеть проверить его или обновить другое значение, которое связано.

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

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

Следует также отметить, что не всегда лучше использовать методы "set".Слепое соответствие шаблонам может привести к слишком сложному коду.Если класс действует как простой ( действительно простой) контейнер данных, тогда общедоступный доступ часто приемлем.Например, посмотрите на java.awt.Rectangle или java.awt.Point классы.

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

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

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

...