Аллен Голуб написал: «Вы никогда не должны использовать функции get / set», он прав? [Дубликат]

На этот вопрос уже есть ответ здесь:

Зачем использовать геттеры и сеттеры / средства доступа? [закрыто] 38 ответов

Аллен Голуб написал следующее:

Вы не можете иметь программу без какой-либо связи. Тем не менее, вы можете значительно минимизировать связывание, неуклонно следуя ОО (объектно-ориентированным) заповедям (самое важное, что реализация объекта должна быть полностью скрыта от объектов, которые его используют). Например, переменные экземпляра объекта (поля-члены, которые не являются константами), всегда должны быть закрытыми. Период. Без исключений. Когда-либо. Я серьезно. (Иногда вы можете эффективно использовать защищенные методы, но защищенные переменные экземпляра являются мерзостью.)

Это звучит разумно, но затем он продолжает:

Вам следуетникогда не используйте функции get / set по той же причине - это просто слишком сложные способы сделать поле общедоступным (хотя функции доступа, которые возвращают полноценные объекты, а не значения базового типа, разумны в ситуациях, когда класс возвращаемого объекта является ключевой абстракцией в проекте ).

Что, честно говоря, просто звучит безумно для меня.

Я понимаю принцип сокрытия информации, но без аксессоров и мутаторов вы вообще не сможете использовать Java-бины. Я не знаю, как вы будете следовать дизайну MVC без аксессоров в модели, так как модельне можешь нести ответственность за предоставление представления.

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

Статьи Аллена Голуба для справкиПочему расширяет злоПочему методы получения и установки злыеСмежные вопросы:Ява: Геттеры и сеттеры злые?Действительно ли это неправильно, если вы не используете сеттеры и геттеры?Популярны ли функции get и set у программистов на C ++?Должны ли вы использовать свойства доступа внутри класса или только вне класса?

Ответы на вопрос(13)

Ваш ответ на вопрос