배경
나는 "Clean Code book"을 읽고, 병렬로, 은행가 계좌와 같은 카스 테 닉 객체 Kata를 작업하고 있으며 그 규칙을 고수하고 있습니다.
calisthenic 객체의 9 번째 규칙은 getter 또는 setter를 사용하지 않는 것입니다.
꽤 재밌는 것 같고이 원칙에 동의합니다. 또한 Clean Code 98-99 페이지에서 저자는 getters / setter가 추상화를 깨뜨리고 객체를 요구할 필요는 없지만 객체를 알려야한다고 설명합니다.
이것은 내 마음에 완벽하게 적용되며이 원칙에 전적으로 동의합니다. 실제로 문제가옵니다.
문맥
예를 들어, 일부 사용자를 나열하고 사용자 세부 정보를 표시해야하는 응용 프로그램이 있습니다.
내 사용자는 다음으로 구성됩니다.
-> Name
--> Firstname --> String
--> Lastname --> String
-> PostalAddress
--> Street --> String
--> PostalCode --> String
문제
간단한 정보 만 표시하고 ( 특정 필드에서 추가 작업이 필요하지 않음을 확인 해야하는 경우) Getter를 피하기 위해 어떻게해야합니까? 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();
그러나이 솔루션에 익숙하지 않습니다. 데메테르 법칙 만 일치시키는 방법으로 표준 게터 / 세터를 우회하는 것과 같은 "고차 접근 자"인 것 같습니다 ...
어떤 아이디어?