코드 품질 개선 - 세션 65: Collection은 List가 전부가 아니다
·2026.02.06 11:00
Collection의 특성을 고려해 List 대신 Set과 Map을 적절히 활용하면 코드의 명확성과 안정성을 높일 수 있다.
사용자 데이터를 대량으로 조회하는 bulkQuery() 함수를 구현할 때, 인자와 반환 값의 타입을 어떻게 설정하느냐에 따라 코드 품질이 크게 달라진다. 기존의 List<UserCategory>를 인자로 받고 List<Set<User>>를 반환하는 방식은 인덱스를 통해 결과와 카테고리를 매칭해야 하는 **암시적 관계(implicit relationship)**를 가진다.
이러한 구조는 zip() 등을 사용해 결과를 매칭해야 하므로 이해하기 어렵고, 관계가 깨지기 쉬운 취약한 구조다. 이를 개선하기 위해 다음과 같은 변경을 권장한다.
- 인자 타입 변경:
List<UserCategory>를Set<UserCategory>로 변경하여 중복된 카테고리 전달을 방지하고 중복이 중요하지 않음을 명시한다. - 반환 타입 변경:
List<Set<User>>를Map<UserCategory, List<User>>로 변경한다. 카테고리와 사용자 데이터 간의 관계를 명시적으로 표현하여 코드의 가독성과 재사용성을 높인다.
또한, 데이터의 순서가 중요한 경우 Set 대신 **List**를 사용하는 것이 좋다. 특히 데이터베이스 레이어에서 정렬을 수행하면 성능상 이점이 있으며, 정렬 순서에 대한 주석을 추가하면 코드의 가독성을 더욱 높일 수 있다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.