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

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

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

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

11 ответов

18 просмотров

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

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
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта