Аллен Голуб написал: «Вы никогда не должны использовать функции get / set», он прав? [Дубликат]
На этот вопрос уже есть ответ здесь:
Зачем использовать геттеры и сеттеры / средства доступа? [закрыто] 38 ответовАллен Голуб написал следующее:
Вы не можете иметь программу без какой-либо связи. Тем не менее, вы можете значительно минимизировать связывание, неуклонно следуя ОО (объектно-ориентированным) заповедям (самое важное, что реализация объекта должна быть полностью скрыта от объектов, которые его используют). Например, переменные экземпляра объекта (поля-члены, которые не являются константами), всегда должны быть закрытыми. Период. Без исключений. Когда-либо. Я серьезно. (Иногда вы можете эффективно использовать защищенные методы, но защищенные переменные экземпляра являются мерзостью.)
Это звучит разумно, но затем он продолжает:
Вам следуетникогда не используйте функции get / set по той же причине - это просто слишком сложные способы сделать поле общедоступным (хотя функции доступа, которые возвращают полноценные объекты, а не значения базового типа, разумны в ситуациях, когда класс возвращаемого объекта является ключевой абстракцией в проекте ).
Что, честно говоря, просто звучит безумно для меня.
Я понимаю принцип сокрытия информации, но без аксессоров и мутаторов вы вообще не сможете использовать Java-бины. Я не знаю, как вы будете следовать дизайну MVC без аксессоров в модели, так как модельне можешь нести ответственность за предоставление представления.
Тем не менее, я младший программист, и я узнаю больше об объектно-ориентированном дизайне каждый день. Возможно, кто-то с большим опытом может взвесить эту проблему.
Статьи Аллена Голуба для справкиПочему расширяет злоПочему методы получения и установки злыеСмежные вопросы:Ява: Геттеры и сеттеры злые?Действительно ли это неправильно, если вы не используете сеттеры и геттеры?Популярны ли функции get и set у программистов на C ++?Должны ли вы использовать свойства доступа внутри класса или только вне класса?