Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 한다.
Wrapping 함으로써 다음과 같은 이점을 가지게 된다.

비지니스에 종속적인 자료구조

  • 서비스 메소드에서 비지니스 로직을 처리했을때의 문제점
    • 만약 해당 상태값에 대한 검증로직이 존재한다면, 필요한 모든 장소에선 검증로직이 들어가야만 한다.
    • 모든 코드와 도메인을 알고 있지 않다면 언제든 문제가 발생할 여지가 있다.
  • 해당 조건으로만 생성 할 수 있는 자료구조를 만들면 위에서 언급한 문제들이 모두 해결된다.
  • 비지니스에 종속적인 자료구조가 만들어져, 이후 발생할 문제가 최소화 된다.

Collection의 불변성을 보장

  • Java의 final은 정확히는 불변을 만들어주는 것은 아니며, 재할당만 금지 한다.
  • 요즘과 같이 소프트웨어 규모가 커지고 있는 상황에서 불변 객체는 아주 중요하다.
    • 각각의 객체들이 절대 값이 바뀔일이 없다는게 보장되면 그만큼 코드를 이해하고 수정하는데 사이드 이펙트가 최소화되기 때문이다.
  • Java에서는 final로 그 문제를 해결할 수 없기 때문에 일급 컬렉션 (Frist Class Collection)과 래퍼 클래스 (Wrapper Class) 등의 방법으로 해결해야하만 한다.
  • 컬렉션의 값을 변경할 수 있는 메소드가 없는 컬렉션을 만들면 불변 컬렉션이 된다.

상태와 행위를 한 곳에서 관리

  • 일급 컬렉션의 값과 로직이 함께 존재한다는 장점이 있다.
  • 어떤 컬렉션과 계산 로직이 서로 관계가 있는데, 이를 코드로 표현이 안될때
    • 상태에 따라 지정된 메소드에서만 계산되길 원하는데, 강제할 수 있는 수단이 없다.
    • 히스토리를 모르는 사람이라면 실수할 여지가 많다.
      • 히스토리가 관리 안된 상태에서 신규화면이 추가되어야 할 경우 계산 메소드가 있다는 것을 몰라 다시 만드는 경우가 빈번하다.
      • 만약 기존 화면의 계산 로직이 변경 될 경우, 신규 인력은 2개의 메소드의 로직을 다 변경해야하는지, 해당 화면만 변경해야하는지 알 수 없다. 관리 포인트가 증가할 확률이 매우 높다.

이름이 있는 컬렉션

  • 컬렉션에 이름을 붙일 수 있다는 장점이 있다.
  • 변수명을 다르게 해서 구분하기보다는 각각의 일급 컬렉션을 만들어서 이 컬렉션 기반으로 용어사용과 검색이 가능하게 하자.

출처
https://jojoldu.tistory.com/412?category=635881

+ 따끈한 최근 게시물