Приветствую, коллеги! Подскажите, пожалуйста, по такому моменту. Представим, что у нас есть

класс пользователя с полями имя, фамилия итд. Для каждого поля есть свой собственный геттер.

Считается ли дурным тоном внутри класса обращаться к полям напрямую, а не через геттеры?
Например, если я пишу метод getFullName(), могу ли я прописать в нем
return $this->lastName . ' ' . $this->firstName;
или же следует делать
return $this->getLastName() . ' ' . $this->getFirstName();

Понимаю, что в данном примере разница не критична, но хочется научиться писать по "бест практисам".

11 ответов

15 просмотров

А сам как думаешь?

Sergio-K. Автор вопроса
Volodymyr Melko
А сам как думаешь?

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

Sergio K.
Сам склоняюсь к геттерам. Но в таком случае обрати...

Тут такой интересный момент просто. Многие топят что геттеры не нужны)

Information expert. Если класс обладает данными, то очевидно он знает как с ними работать

Sergio-K. Автор вопроса
Павел Г.
Тут такой интересный момент просто. Многие топят ч...

Если не затруднит, подскажите, пожалуйста, где можно почитать о таком подходе у «классиков»? Роберт Мартин, Маконнелл итд итп. Концепцию понял, но хотел бы погрузиться более всесторонне.

Sergio K.
Если не затруднит, подскажите, пожалуйста, где мож...

А вот статья от "местного жителя" https://habr.com/ru/post/500416/ Ну и заодно интересные обсуждения в комментах как за, так и против.

Sergio-K. Автор вопроса
Павел Г.
А вот статья от "местного жителя" https://habr.com...

Спасибо за столь развёрнутый ответ!) Сейчас буду погружаться.

Как удобно так и делай, тут вообще нету никаких правил

Ну если не холиварить на тему геттеров, то внутри вашего getFullName() лучше использовать геттеры, раз уж они есть. Чтобы все ваши геттеры отдавали согласованные ответы. Пример: в getFirstName() и getLastName() может использоваться trim, и если в getFullName() вы дернете свойства напрямую, то trim не применится, и fullname перестанет быть консистентным с именем и фамилией.

Sergio-K. Автор вопроса
Логачев Сергей
Ну если не холиварить на тему геттеров, то внутри ...

Согласен с вами, спасибо за отклик. Пока такой вариант заиспользовал. Не готов ещё морально отказаться от геттеров)

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
кто-нибудь уже пробовал это?
Lencore
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Карта сайта