일급 컬렉션의 개념을 좀 더 정확히 짚고 넘어가야 할 것 같았다.
1차 리뷰어님께서 첨부해 주신 글을 저번에도 읽어보았으나
그 때까지는 이 글의 모든 개념을 파악하기 어려웠다.
때문에 훌라당 읽고 넘어갔지만 🥲
이번에 정독해보니 머릿 속에 개념과 목적이 좀 더 명확하게 잡혔다.
내 머릿 속에 박을라고 내가 이해한대로 진짜 간단하게 정리하는 글 ✍️
일급 컬렉션 (First Class Collection)의 소개와 써야할 이유
다른 멤버 변수가 없이 오로지 콜렉션만 포함한 객체.
한마디로 Collection을 클래스로 Wrapping 한 것이다.
collection의 값을 비즈니스 로직이 서비스 메소드에 들어가 있을 때
값을 검증하는 메소드도 이 서비스 메소드에 들어가게 될 것이다.
만약 변경이 일어난다면 모든 코드와 도메인을 알고 있어야하므로 언제든지
문제의 발생 여지가 있는 로직이 되어버린다.
이는 객체지향 설계에 어긋난다.
해당 조건으로만 생성 할 수 있는 자료구조인 일급 컬렉션을 사용한다.
final
예약어를 사용하라.
이는 불변을 금지하는 것이 아닌 재할당을 금지한다.
컬렉션 내의 어떤 상태별로 메소드를 실행하고 싶다 가정할 때
로직이 밖으로 분리되어 있다면 상태에 따라 지정된 메소드 실행이 어렵다.
컬렉션에 이름을 붙일 수 있어 검색이 어렵고 명확한 표현이 불가능한 문제를 해결한다.