Case 01
단일 책임 원칙을 적용한 장소 입력 컴포넌트 개선
700줄 → 400줄
코드량
약 43% 감소
Problem
장소 입력 컴포넌트는 700줄이 넘는 하나의 파일에 UI 렌더링, 데이터 페칭, 상태 관리, 이벤트 핸들링이 모두 뒤섞여 있었습니다. 기획이 조금만 바뀌어도 파일 전체를 다시 파악해야 했고, 단순한 요구사항 하나를 반영하는 데도 복잡한 수정이 뒤따르는 구조적 한계가 있었습니다.
Solution
단일 책임 원칙을 적용해 UI 로직과 데이터 로직을 분리했습니다. 비즈니스 로직은 커스텀 훅으로 분리해 상태 관리와 API 호출 책임을 나누고, Context API로 상태와 함수를 계층 간에 전달하는 구조를 다시 설계했습니다.
Result
관심사 분리와 중복 코드 제거로 700줄이던 파일을 400줄로 줄였습니다. 기능 추가나 버그 수정 시 관련 파일만 수정하면 되는 구조가 되어 유지보수성이 높아졌고, 팀원들이 코드를 이해하는 속도와 요구사항을 구현하는 속도도 함께 빨라졌습니다.

장소 입력 폼

필드 추가 및 유효성 검증
기술적 의사결정
전역 상태 관리 라이브러리를 새로 도입하는 대신, 커스텀 훅 + Context API 조합을 택했습니다. 이 컴포넌트의 상태는 장소 입력 페이지 내부에서만 쓰이는 지역적인 상태였고, 팀의 일정과 러닝 커브를 고려했을 때 이미 익숙한 도구로 책임만 정확히 나누는 편이 리스크가 적다고 판단했습니다.
트레이드오프
커스텀 훅 + Context API로 책임 분리 vs. Redux/Zustand 등 전역 상태 관리 라이브러리 도입
문제의 본질은 "상태 관리 도구의 부재"가 아니라 "책임이 한 파일에 몰려 있는 구조"였기 때문에, 도구를 바꾸기보다 구조를 바꾸는 쪽을 택했습니다.


