인프런 커뮤니티 질문&답변

김연준님의 프로필 이미지
김연준

작성한 질문수

Readable Code: 읽기 좋은 코드를 작성하는 사고법

객체 설계하기 (1)

getter 질문드립니다

해결된 질문

작성

·

106

0

안녕하세요!

예시에서 person.get지갑().get신분증().findAge() >= 19

person.isAgeGreaterThanOrEqualTo(19) 메서드로 만들면

person 내부에서 다시 지갑.get신분증().findAge() 형태가 되는데, 이 경우 지갑.isAge..(19) 같은 메서드를 계속 만드는지 끊어내는 기준이 있는지 궁금합니다.

답변 1

1

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, 김연준 님!
좋은 질문이네요 👍

저는 그 경우에도 마찬가지로, 그 내부에서 객체 간의 역할과 책임을 한번 더 고민해 봅니다.

지갑.get신분증().findAge() 가 자연스러운지, 아니면 지갑에게 다시 질문하여 지갑.isAge..(19) 가 더 자연스러운지 Person 객체와 지갑 객체 사이에서 한번 더 고민해 보는거죠.
(이 예시에서는 지갑에게 다시 메시지를 보내 물어보는 후자가 더 좋지 않을까 싶네요 ㅎㅎ)
한번 더 들어가면 지갑과 신분증 사이에서 또 같은 고민을 해볼 수 있겠네요.

이렇게 계속 타고타고 들어가다가, 어느 순간 메시지를 보내지 않고 직접 꺼내도 되겠는데? 하는 순간이 오기도 합니다.

정리하면, 레이어마다 각 객체의 책임을 고려하여 결정하시면 됩니다.

도움이 되셨기를 바랍니다.
감사합니다 🙂

김연준님의 프로필 이미지
김연준
질문자

감사합니다!

김연준님의 프로필 이미지
김연준

작성한 질문수

질문하기