본문 바로가기
Programming/Java, Spring

콜렉션에 대해 일급 콜렉션을 적용했는가? - 우아한테크코스 우테코 클린코드 #5

by Renechoi 2022. 10. 31.

콜렉션에 대해 일급 콜렉션을 적용했는가? - 우아한테크코스 우테코 클린코드 #5

 

이전글에 이어 우아한테크코스에서 요구하는 클린코드 원칙들을 살펴본다. 

 


 

<소트웍스 앤솔러지>는 다음과 같이 일급 콜렉션의 사용 규칙을 제시하고 있다. 

 

이 규칙의 적용은 간단하다. 콜렉션을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다. 각 콜렉션은 그 자체로 포장돼 있으므로 이제 콜렉션과 관련된 동작은 근거지가 마련된 셈이다. 

 

먼저 일급 콜렉션이란 멤버 변수가 하나가 밖에 없는 컬렉션 메소드를 의미한다. 

 

예를 들어 

 

public class Computers {

	private List<Computer> computers;
}

 

같이 멤버 변수가 하나밖에 없는 상황으로 일릅 콜렉션은 List<T> Xs 외 다른 변수가 없다. 

 

 

또 다른 예시로 아래와 같은 코드가 있다. 

 

Map<String, String> map = new HashMap<>();
map.put("1", "A");
map.put("2", "B");
map.put("3", "C");

이를 

 

    public GameRanking(Map<String, String> ranks) {
        this.ranks = ranks;
    }

- 출처 : 일급 컬렉션의 소개와 써야할 이유

 

이와 같이 map의 자료구조를 감싸주게 되었다.

 

이것의 장점은 상태와 행위를 각각 관리할 수 있게 해준다는 점이다. 

 

복수형 클래스를 관리할 때 일급컬렉션을 만들어 사용하면 관리에 용이하다. 

 

또 다른 예시로 카드 놀이를 하는 로직을 생각해보자.

 

플레이어가 있고 딜러가 있다고 가정한다.

이때 딜러 클래스와 플레이어 클래스에서 매번 카드를 선언해야 하는 중복 현상을 

카드라는 클래스를 새롭게 만들어 (= 일급컬렉션으로 생성하여) 관리할 수 있다. 

 

private class Cards {
	private final List<Card> cards;
}

 

 

 

반응형