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

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

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

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

11 ответов

3 просмотра

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

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. Автор вопроса
Логачев Сергей
Ну если не холиварить на тему геттеров, то внутри ...

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

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

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

Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
господа, когда у вас в боте есть локализация (ру + англ, остальные языки пока не планируются), вы на первом старте как с языком решаете вопрос: смотрите на language_code приле...
Denis 🐍|👑 | darling! 🥰
5
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
А чего при переходе с 2 на 3 все что в билдере сделано тютю?
Денис Александрович
5
Кому нибудь нужен плагин для генерации метатегов? А если нужен что бы вам хотелось в нем видеть?
Black Cat
3
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Карта сайта