일급 컬랙션 본문

백앤드 개발일지/자바

일급 컬랙션

giron 2021. 12. 20. 03:47
728x90

프리코스를 진행하면서 새롭게 안 사실을 말하라고 하면 우선적으로 일급 컬랙션을 말할 것 같다.

긴 말은 생략하고 정의와 활용법 그리고 왜 사용하는 지를 알아보겠다!😄😄

 

일급컬렉션이란(First Class Collection)?

 - Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라고 한다.

public class Cars{
	List<Car> cars = new ArrayList<>();
    
    Cars(List<Car> cars){
    	this.cars = cars;
    }
    ... 
}

역시 코드를 보는 게 이해하는 게 더 쉬울 것 같다! 위에 처럼 구현된 게 일급 컬렉션이다.

일급 컬렉션의 장점?

  1. 비즈니스에 종속적인 자료구조
  2. Collection의 불변성을 보장
  3. 상태와 행위를 한 곳에서 관리
  4. 이름이 있는 컬렉션

일급 컬렉션 구현

제가 일급 컬렉션이라고 생각하고 개인적으로 구현한 코드입니다. (틀릴 수도 있어요.. 근데 제가 공부한 개념으로 적용해본 거라 맞..을..거에요? 기본 생성자만 매개변수 갖는 생성자로 바꿔주면 하. 프리코스때 잘못 작성해서 ㅜㅜ,,...혹시 틀리다면 댓글 부탁드려요!😇) 

위에 처럼 join 하는 로직을 넣을 수도 있지만, 대표적으로 List에 포함되는 size개수를 제한을 둬서 검증할 때, 일급 컬렉션을 사용해서 내부 로직에서 검증을 할 수도 있다.

 

불변성

일급 컬렉션에 대해 블로그를 통해 학습하다 보면 많이 보이는데 혹시 까먹을까 봐 한번 더 기억하려고 작성하겠다.

final불변이 아닌 재할당을 금지하는 것이고 String, Integer같은 Wrapper Class가 불변성을 갖는다.

또한 이러한 불변성을 보장하는 게 일급 컬렉션으로 가능하다.

 

이 외에 객체지향적인 코드를 작성하는데 일급 컬렉션을 쓰는 이유가 많지만, 여러 블로그에 중복이 되어 여기까지만 적겠다.

 

참고

스프링부트 프로젝트를 할 때, 일급 컬렉션을 알았다고 무조건 사용하면 안 좋다고 한다. 우선 1:M 매핑부터 바로 일급 컬렉션을 적용하면 적용이 안된다. 따라서 @Embedded로 감싼 후 일급 컬렉션을 적용해야 가능하다. 하지만 객체를 한 번 감싸므로 쿼리를 통해 조회를 할 때 성능이 안 좋다고 한다. 

따라서 비즈니스 로직을 통과한다거나 검증 같은 로직이 필요하면 일급 컬렉션으로 감싸는 게 좋고

단순한 로직에 리스트 조회나 출력이 많다면 일급 컬렉션을 사용하지 않는 것도 좋은 방법이라고 한다.

새로운 지식을 배웠다고 무지성으로 사용함을 자제하고 트레이드 오프를 항상 고려하자!!🤪🤪

 

출처: https://www.inflearn.com/questions/84874

Reference

 

일급 컬렉션 (First Class Collection)의 소개와 써야할 이유

최근 클린코드 & TDD 강의의 리뷰어로 참가하면서 많은 분들이 공통적으로 어려워 하는 개념 한가지를 발견하게 되었습니다. 바로 일급 컬렉션인데요. 왜 객체지향적으로, 리팩토링하기 쉬운 코

jojoldu.tistory.com

 

728x90
Comments