Фон
Я читаю "Книгу чистого коду", і паралельно я працюю над гігієнічними об'єктами Ката, як банківський рахунок, і я дотримуюся цього правила:
Дев'яте правило калієстичних об'єктів - це те, що ми не використовуємо геттер або сеттер.
Це здається досить веселим, і я згоден з цим принципом. Більше того, на сторінці 98-99 Чистого кодексу автор пояснює, що геттери / сетери порушують абстракцію, і що нам не потрібно запитувати наш об’єкт, але ми мусимо сказати наш об’єкт.
Це має ідеальний сенс у моїй свідомості, і я цілком згоден з цим принципом. Проблема приходить на практиці.
Контекст
Наприклад, у мене є додаток, у якому я повинен перераховувати деяких користувачів та відображати дані про користувачів.
Мій користувач складається з:
-> Name
--> Firstname --> String
--> Lastname --> String
-> PostalAddress
--> Street --> String
--> PostalCode --> String
Проблема
Як я можу зробити або що я можу зробити, щоб уникнути геттерів, коли мені потрібно лише відобразити просту інформацію ( і я повинен підтвердити, що мені не потрібні додаткові операції в цьому конкретному полі ), щоб відобразити значення Першого імені просто ( випадкова) підтримка виводу?
Що приходить мені в голову
Одне рішення - зробити:
user.getName().getFirstName().getStringValue()
Що загалом страшно, порушуючи багато правил гігієнічних об'єктів та порушуючи закон Деметра.
Ще одне було б щось на зразок:
String firstName = user.provideFirstnameForOutput();
// That would have called in the user object =>
String firstName = name.provideFirstnameForOutput();
// That would have called in the name object =>
String firstName = firstname.provideFirstnameForOutput();
Але мені не комфортно з цим рішенням, це лише здається, що є "приналежністю вищого порядку", як обхід стандартного геттера / сеттера методом, який має на меті відповідати лише закону Деметра ...
Будь-яка ідея?