피드로 돌아가기
Emergent Abstractions
Dev.toDev.to
Backend

반복적 데이터 범위 로직의 DateInterval 추상화 통한 코드 단순화

Emergent Abstractions

Aaron Maxwell2026년 5월 8일4intermediate

Context

여러 클래스에 분산된 start 및 end date 인자 처리 방식의 중복 발생. 날짜 범위 확인 및 기본값 설정 로직이 산재하며 코드 복잡도 증가 및 유지보수 효율 저하 유발.

Technical Solution

  • 중복된 날짜 범위 처리 로직을 단일 책임 객체인 DateInterval 클래스로 캡슐화
  • date(MINYEAR, 1, 1)와 date(MAXYEAR, 12, 31)를 통한 시간 경계값의 상수로 정의

contains Magic Method 구현을 통한 날짜 포함 여부 검사 로직의 직관적 추상화

  • Iterator Protocol 및 Generator Function 적용으로 날짜 범위 내 모든 일자를 효율적으로 순회하는 구조 설계
  • Class Method인 all()을 통한 전체 시간 범위 객체 생성 편의성 제공
  • 입력 값 검증 로직을 생성자 내부에 배치하여 start > end 상황의 예외 처리 강제

- 코드 전반에 걸쳐 동일한 인자 조합(예: start/end)이 반복되는 지점을 식별하십시오. - 구체적인 명사(Entity) 기반의 클래스 외에 로직을 처리하는 추상적 개념(Abstraction)의 클래스 도입을 검토하십시오. - Magic Method를 활용하여 도메인 특화 언어(DSL)와 유사한 직관적인 인터페이스를 설계하십시오. - 하향식 설계(Bottom-up)보다 구현 과정에서 발견되는 패턴을 통한 Emergent Abstraction을 적용하십시오.

원문 읽기