일급 컬렉션이란? #15
Replies: 4 comments
-
일급 컬렉션이란 무엇이며, 왜 사용하는지 자유롭게 서술해주세요.먼저 컬렉션이란 여러 개의 데이터를 하나로 묶어 관리하는 자료구조이다. 컬렉션을 사용하면 여러 데이터를 편리하게 저장하고 조회할 수 있다. 하지만 컬렉션을 그대로 사용하면, 컬렉션과 관련된 규칙과 로직이 프로그램의 여러 곳에 흩어질 수 있다는 문제가 있다. 예를 들어 학생 점수 목록에는 다음과 같은 규칙이 존재한다면,
이러한 규칙을 일급 컬렉션이란 컬렉션을 단순한 자료구조로 사용하지 않고, 하나의 독립적인 객체로 다루는 설계 방식이다. 즉, 예를 들어 점수 목록을 단순히 다음과 같이 사용할 수 있다. 이를 일급 컬렉션으로 만들면 다음과 같이 표현할 수 있다. 이제 사용하는 쪽에서는 내부의 일급 컬렉션을 사용하면 가장 먼저 컬렉션에 명확한 의미를 부여할 수 있다. 또한 컬렉션에 적용되는 유효성 검증을 한곳에서 관리할 수 있다. 컬렉션과 관련된 행위를 한곳에 모을 수 있다는 점도 장점이다. 평균 계산, 최고 점수 조회, 특정 점수 포함 여부 등 점수 목록과 직접 관련된 기능을 일급 컬렉션은 외부에서 내부 컬렉션을 임의로 변경하는 것을 막는 데에도 도움이 된다. 예제에서는 생성자로 전달받은 리스트를 다만 컬렉션이 사용된다고 해서 항상 일급 컬렉션을 만들어야 하는 것은 아니다 특별한 규칙이나 행위가 없고, 한 번만 간단하게 사용하는 컬렉션이라면 컬렉션 그대로 사용하는 것이 더 단순할 수 있다. 반면 컬렉션에 크기 제한, 중복 제한, 값의 범위, 계산 로직 등의 규칙이 존재하거나 동일한 컬렉션 로직이 여러 곳에서 반복된다면 일급 컬렉션을 도입하는 것이 효과적이다. |
Beta Was this translation helpful? Give feedback.
-
일급 컬렉션이란 무엇이며, 왜 사용하는지 자유롭게 서술해주세요.일급 컬렉션이란, 컬렉션을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태의 객체를 의미한다. 일급 컬렉션의 목적은 단순한 데이터 바구니(자료구조)에서 벗어나, 도메인 규칙을 포함하는 도메인 객체로 승격시키는 것이다. 예시) //단순한 바구니
//아래 코드를 처음 읽는 사람은 로직을 끝까지 해석해야만 의도를 유추할 수 있다.
int maxPosition = cars.stream()
.mapToInt(Car::getPosition)
.max()
.orElse(0);
List<Car> winners = cars.stream()
.filter(car ->car.getPosition() == maxPosition)
.collect(Collectors.toList());
//일급컬렉션
//명확한 의사소통
//'어떻게(How)' 구하는지는 알 필요없이, '무엇(What)'을 하는지만 코드로 명확히 읽힌다.
List<Car> winners = cars.findWinners();Q. 왜 컬렉션 이외의 상태를 가지면 안 될까? 또 컬렉션만을 상태로 Q. 컬렉션만을 상태로 가진다면 모두 일급 컬렉션인가? Q. 일급컬렉션의 장점? Q. 일급컬렉션을 언제 사용하는 게 좋을까? (https://www.youtube.com/watch?v=0sDoo2ChST4 의 강연 내용을 참고) |
Beta Was this translation helpful? Give feedback.
-
일급 컬렉션이란?Collection 을 단 하나의 필드로만 가지는 전용 래퍼 클래스를 만드는 객체지향 설계 패턴이다. 단순히 데이터를 모아두는 바구니인 컬렉션을 , 자신의 데이터에 책임을 지고 스스로 검증과 계산(비지니스 로직)을 수행하는 객체로 승격시킨다. 수동적 → 주체적 일급 컬렉션은 왜 단 하나의 필드(컬렉션)을 갖는가?단 하나의 컬렉션에 관한 역할에 집중하기 위해. 장점
|
Beta Was this translation helpful? Give feedback.
-
일급컬렉션이란? 왜 사용할까?우선, 컬렉션이란 여러개의 데이터를 하나로 묶어 관리하는 객체를 말한다. 자바에서는 대표적으로 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
📆 일자: 26년 7월 20일(월)
오늘의 질문
일급 컬렉션이란 무엇이며, 왜 사용하는지 자유롭게 서술해주세요.
Beta Was this translation helpful? Give feedback.
All reactions