first-programmer
@first-programmer
Backend software engineer

Использовать ли геттеры в классе где объявлены приватные свойства?

Всем привет! Есть класс, у него некоторые свойства явлются приватными, созданы для них геттеры, сеттеры. Есть два варианта и мнения - 1 - нет смысла в самом классе использовать геттеры, так как можно напрямую обращаться к свойствам, это экономит (в рамках тысяч использований) память и работает быстрее, чем вызов метода. Но, тогда ведь не получится удобно переопределять геттеры, чтобы менять логику работы где используются эти свойства. А надо ли это делать всегда, давать такую возможность? 2 - понятно как, использовать геттеры внутри класса, забив на в большинстве случаев, как мне кажется сомнительную экономию по памяти и скорости работы. Подскажите, что и почему есть правильный подход.

Сам придерживаюсь больше первого варианта. Но с другой стороны подумал о расширяемости и чет закралась мысль, что правильнее все же геттеры использовать даже в самом классе где приватные свойства.
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev
software engineer
геттеры и сеттеры именно для этого и нужны - чтобы далеко далеко в будущем, когда будет много других классов, и которым нужны эти данные, и вдруг тип данных нужно будет поменять (например перейти от int32 к int64), то будет достаточно просто поменять тип приватных данных, поправить геттеры, чтобы они конвертили в int32 для старых зависимостей и сделать два новых 64-битных геттера для новых.
И потом уже все кто лазили за данными, либо будут потихоньку переходить на новые геттеры, либо сидеть на старых, но с ограничением.

Если у вас 2.5 класса, можете делать как угодно. Смысл геттеров и сеттеров изначально именно в том, чтобы обеспечить совместимость на десятилетия вперед.

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

Все зависит от приоритетов. Нужна скорость - делаете одно. Нужна совместимость - делаете другое. Нужно и то и то - ищете архитектурный подход, где от геттеров все зависит мало.
Ответ написан
@12rbah
это экономит (в рамках тысяч использований) память и работает быстрее
Не имею ничего против пхп, но если вы хотите экономить память и заниматься оптимизацией на 10 наносекунд то вам не к этому языку. Если у вас миллион раз вызовется гетер, то вероятно, затраты на его вызов будут ничтожно малы по сравнению с временем работы всей функциии. Если вы писали hft бота на си, который подключен напрямую к бирже, где сетевые задержки минимальны, то еще был бы смысл думать над этим. А в реальности такие "оптимизации приведут только к проблемам".
Ответ написан
php666
@php666
PHP-макака
работает быстрее
на какие миллионные доли секунды?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы