콜렉션에 대해 일급 콜렉션을 적용했는가? - 우아한테크코스 우테코 클린코드 #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;
}
반응형
'Programming > Java, Spring' 카테고리의 다른 글
getter/setter 없이 구현했는가? - 우아한테크코스 우테코 클린코드 #7 (0) | 2022.10.31 |
---|---|
3개 이상의 인스턴스 변수를 가진 클래스를 구현하지 않았는가? - 우아한테크코스 우테코 클린코드 #6 (0) | 2022.10.31 |
모든 원시값과 문자열을 포장했는가? - 우아한테크코스 우테코 클린코드 #4 (0) | 2022.10.30 |
else 예약어를 쓰지 않았는가? - 우아한테크코스 우테코 클린코드 #3 (0) | 2022.10.30 |
한 메서드에 오직 한 단계의 들여쓰기만 - 우아한테크코스 우테코 클린코드 #2 (0) | 2022.10.30 |