Фон
Я читаю «Чистую книгу кодов», и, в частности, я работаю над художественными объектами Kata, как банковский счет, и я застрял на этом правиле:
Девятое правило художественных объектов - мы не используем геттеры или сеттеры.
Это кажется довольно забавным, и я согласен с этим принципом. Более того, на странице 98-99 Чистого кода автор объясняет, что геттеры / сеттеры нарушают абстракцию и что нам не нужно спрашивать наш объект, но мы должны сказать наш объект.
Это имеет смысл в моем сознании, и я полностью согласен с этим принципом. Проблема приходит на практике.
контекст
Например, у меня есть приложение, в котором я должен перечислить некоторых пользователей и отобразить данные о них.
Мой пользователь состоит из:
-> Name
--> Firstname --> String
--> Lastname --> String
-> PostalAddress
--> Street --> String
--> PostalCode --> String
проблема
Как я могу это сделать, или что я могу сделать, чтобы избежать получения, когда мне нужно только показать простую информацию ( и я должен подтвердить, что мне не нужны дополнительные операции с этим конкретным полем ), чтобы отобразить значение Firstname в простом ( случайный) выходной поддержки?
Что приходит мне в голову
Одним из решений является сделать:
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();
Но я не чувствую себя комфортно с этим решением, которое кажется только «средством доступа более высокого порядка», как обход стандартного метода получения / установки с помощью метода, который нацелен только на соответствие закону Деметры ...
Есть идеи ?