[12.27] First Collection Pattern

Always·2024년 12월 27일
1

매일메일

목록 보기
6/69

https://www.maeil-mail.kr/question/53
요약: 일급 컬렉션 패턴을 이용하면 비즈니스 로직이 자료구조에 의존하지 않아도 되어서, 더 나은 유지보수성 있는 코드를 만들 수 있음

일급 컬렉션이란?

public class Videos{
private List<Video> videos;
public Videos( List<Video> videos){
validate(videos)
....
}
.....
}

  • 위의 코드처럼 하나의 클래스가 컬렉션을 감싸며, 해당 클래스에서 컬렉션과 관련된 비즈니스 로직 및 도메인을 관리 하는 패턴을 First Collection이라고 합니다
  • 이러한 코드를 이용하면 아래와 같은 코드의 책임이 서비스 단에서 관리 하는 것이 아닌 일급 컬렉션 클래스에서 제공합니다
    private List<Contact> makeContacts(List<PhoneBook> phoneBooks) {
        return phoneBooks.stream()
                .map(phoneBook -> Contact.builder()
                        .phoneNumber(phoneBook.getPhoneNumber())
                        .name(phoneBook.getNickName())
                        .isCurtainCallOnAndOff(phoneBook.isCurtainCallOnAndOff())
                        .build())
                .collect(Collectors.toList());
    }
    

이것을 써서 얻을 수 있는 이점은?

  • 복잡한 비즈니스 로직속에서 컬렉션에 종속되지 않을 수 있습니다.
    • 제가 경험한 바로, 비즈니스 로직이 복잡해지는 이유중 하나는 컬렉션을 stream이나 iter를 사용하여, 제어 할 때, 코드가 길어지고, 복잡해집니다.
    • 이러면 실수할 가능성이 늘어나고, 가독성이 엉망이 되며, 유지보수성 또한 안 좋아질 것입니다.
  • 위의 이점에서의 연장선상으로 객체의 책임소재가 명확해져, 유지보수성이 향상됩니다.
    • 값의 계산과 상태를 First Collection으로 관리하여 srp원칙에 더욱 부합해집니다.
  • 컬렉션에 클래스 네임을 붙일 수 있어 의도를 더욱 명확히 할 수 있습니다.
List<Video>-> Videos vides

참고

해당 글은 매일메일을 공부하며 적는 글입니다.
https://www.maeil-mail.kr/

profile
🐶개발 블로그

0개의 댓글