[250418] 도서 검색 기능 설계 연습 - 아침 스터디

트라이캐치·2025년 4월 17일

출퇴근미니스터디

목록 보기
10/23
post-thumbnail

SRP의 핵심 개념

각 클래스는 단 하나의 책임만 가져야 한다.

라는 단순한 개념으로 생각하고 있었으나. 그 밑에 한줄 더 있던 것을 기억해내야한다.

클래스가 변경될 이유는 오직 하나만 있어야 한다.

단순하게 하나의 클래스는 하나의 책임을 진다고 생각하였을떄,
책임이란 무엇인지에 대해 잘못 고민하게되면 "기능" 으로 오해하기 쉽다는 것을 알게됨
그런식이라면 한클래스에 한줄이나 있겠다 야~ 싶어서 다시 이야기 나눈 결과

"클래스가 변경될 이유는 오직 하나만 있어야한다"

라는 기준으로 다시 생각해보면 헷갈리던 것들이 조금더 선명하게 보이게 되었다.


오늘의 목표

  • 객체지향적 감각 (SRP 적용)
  • 클린 코드 사고
  • 실무 중심 검색 기능 설계

✍️ 기능 정의

  • 사용자가 "도서 제목"을 입력한다.
  • 시스템이 해당 제목을 포함하는 책을 찾아 보여준다.

SRP 기반 책임 분리

역할책임
UI입력 수집, 결과 출력
BookSearchCondition검색 조건 데이터 객체 (nullable 허용)
BookSearchService검색 실행 및 결과 정렬

BookSearchCondition 설계

  • title: String (nullable)
  • author: String (nullable)
  • publishYear: Integer (nullable)
  • genre: String (nullable)

→ 모든 필드는 선택적 입력을 허용한다.


BookSearchService 흐름

  1. BookSearchCondition을 입력받는다.
  2. 조건이 비어 있으면 전체 목록 반환.
  3. 조건이 있으면 필터링 후 정렬하여 반환.

철학 요약

"한 클래스는 하나의 이유로만 변경되어야 한다."

  • 책임은 기능 흐름이 아니라 변경 이유로 구분한다.
  • 검색 조건은 유연성을 최우선으로 설계한다.
  • 필수값 검증은 비즈니스 규칙에 맡긴다.

오늘의 한 줄 요약

"SRP는 클래스 줄 수가 아니라, 변경 이유를 본다."

0개의 댓글