기본 콘텐츠로 건너뛰기

라벨이 자바인 게시물 표시

자바에서 일급 컬렉션을 쓰는 이유: List를 감싸면 설계가 어떻게 달라질까

자바에서 일급 컬렉션을 쓰는 이유: List를 감싸면 설계가 어떻게 달라질까 빠른 답 컬렉션에 규칙과 의미가 붙기 시작하면 List<Order> 보다 Orders 처럼 이름 있는 타입이 의도를 더 분명하게 드러냅니다. 검증은 생성 시점과 변경 메서드 안으로 모으고, 외부에는 add() , totalAmount() 처럼 목적이 보이는 연산만 열어두는 쪽이 흐름을 읽기 쉽습니다. 외부에 컬렉션을 그대로 노출하면 상태가 예상 밖에서 바뀌기 쉬워서, 읽기 전용 뷰나 복사본으로 경계를 분리하는 편이 도움이 됩니다. 다만 단순 전달용 목록까지 모두 감쌀 필요는 없고, 중복 검사·합계 계산·정렬 정책처럼 컬렉션 자체의 규칙이 생길 때 도입하는 편이 효과적입니다. 목차 한눈에 비교 왜 그냥 List 로는 도메인 규칙이 흩어질까 일급 컬렉션은 무엇을 바꾸는가 실전 코드로 보는 Orders 구현 생성 검증, 변경 통제, 계산을 한곳에 모으는 방식 읽기 전용 뷰와 복사본은 다르다 언제 쓰면 도움이 되고, 언제는 과할 수 있을까 구현할 때 함께 보는 구조 예시 자주 나오는 오해와 주의점 마무리 한눈에 비교 표현 대상 List<Order> 는 저장 구조를 보여주고, Orders 는 도메인 안에서 어떤 주문 묶음인지 의미를 함께 드러냅니다. 책임 위치 List<Order> 를 직접 쓰면 검증과 계산이 서비스나 유틸로 흩어지고, 일급 컬렉션을 쓰면 관련 규칙을 한 타입 안에 모을 수 있습니다. 변경 방식 List 는 add , remove , clear 같은 범용 API가 열려 있지만, Orders 는 허용할 변경만 메서드로 제한할 수 있습니다. 검증 시점 raw 컬렉션은 사용할 때마다 방어 코드가 따라붙기 쉽고, 일급 컬렉션은 생성 시점과 변경 시점에 규칙을 일관되게 적용하기 쉽습니다. 외부 노출 List 를 그대로 반환하면 내부 상태가 새기 쉽지만, 일급 컬렉션은 읽기 전용 목록, 개수, 합계처럼 필요한 표면만 제공할 수 있습니다. 테...