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

후아휴님의 프로필 이미지
후아휴

작성한 질문수

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

리팩토링 (2) - 객체의 책임과 응집도

일급컬렉션 메서드 반환타입 List로의 반환 vs 일급컬렉션으로 반환

작성

·

128

0

안녕하세요

강의보다가 일급컬렉션에 정의한 메서드들의 반환타입이 일급컬렉션 타입으로 반환하기도 하고 LIst<>로도 반환하기도 하셨던거 같았는데요 어느 기준을 가지고 어떤 타입으로 반환하는지 궁금합니다

답변 2

1

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

안녕하세요, 후아휴 님!

명확한 기준이 있는 것은 아니지만, 저는 이 메서드를 사용하는 사용자(클라이언트)가 가장 이해하기 쉬운, 그리고 사용하기 쉬운 형태가 무엇일지를 기준으로 고민합니다.

제가 '메서드 선언부' 강의에서, 메서드가 가지고 있는 반환 타입, 메서드명, 파라미터 이 3가지가 연결되어 드러내는 의미가 가장 중요하다고 말씀드렸는데요.
A라는 메서드에서는 사용자가 반환타입으로 일급컬렉션을 받아서 그 이후의 로직을 처리하면 좋겠다, 라고 생각할 수도 있고,
B라는 메서드에서는 사용자가 List, Set, Map 등의 컬렉션을 바로 받아서 사용하는 것이 편하겠다, 라고 생각할 수도 있습니다.

예를 들어, 사용자가 일급컬렉션 내부의 객체를 전혀 몰랐으면 좋겠다, 라고 한다면 메서드의 모든 반환 타입은 반드시 모두 포장된 형태의 일급컬렉션이 되어야 할 것이고요.
사용자가 어떤 필터링된 리스트를 바로 사용하는 것이 좋겠다, 라고 한다면 일급컬렉션 내부에서 가지고 있는 데이터를 어떤 조건에 따라 필터링 가공을 한 뒤에 List 타입을 바로 반환해줄 수도 있을거에요.

이러한 관점으로 때에 따라 적절한 결정을 내려보시면 좋을 것 같습니다.

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

0

저도 궁금했는데 잘봤습니다!

후아휴님의 프로필 이미지
후아휴

작성한 질문수

질문하기