이번 TIL에서는 팀 프로젝트를 진행하며 SOLID 원칙을 적용해 본 경험을 공유합니다. 설문조사 모달 창에서 단일 책임 원칙과 인터페이스 분리 원칙을 중점적으로 적용하여 리팩토링을 진행했습니다. 이 과정을 통해 모듈화와 재사용성을 개선하고자 했습니다.
리팩토링 과정
- useFilterFoods 커스텀 훅 분리
- 목적: SurveyModal에서 렌더링과 관련된 로직만 남기고, 데이터 처리 로직을 useFilterFoods 커스텀 훅으로 분리
- 구현 내용:
- 점수 계산 및 데이터 필터링 로직을 useFilterFoods 훅으로 이동
- SurveyModal은 설문조사 관련 UI와 로직만 처리
- 결과: 모듈화와 재사용성 향상
- 컴포넌트 분리
- 목적: 컴포넌트를 더 분리하여 역할을 명확히 하고, 코드의 유지보수성과 재사용성 향상
- 구현 내용:
- FoodList와 FoodItem 컴포넌트를 분리
- 결과: 각 컴포넌트가 하나의 특정 역할만 담당
적용 원칙 및 결과
- 단일 책임 원칙 (Single Responsibility Principle, SRP)
- 설명: 각 컴포넌트나 모듈이 하나의 책임만을 가지도록 하는 원칙
- 적용 사례: useFilterFoods 커스텀 훅을 사용하여 데이터 필터링 기능을 분리
- 이점:
- 유지보수 용이성: 각 모듈이 하나의 책임만 가지므로 수정 및 유지보수가 용이
- 재사용성: useFilterFoods 훅은 다른 컴포넌트에서도 쉽게 재사용 가능
- 가독성: 각 모듈의 책임이 명확해져 코드 이해가 쉬움
- 인터페이스 분리 원칙 (Interface Segregation Principle, ISP)
- 설명: 클라이언트가 자신이 사용하지 않는 메서드에 의존하지 않도록 하는 원칙
- 적용 사례: 컴포넌트의 역할을 분리하여 각 컴포넌트가 불필요한 메서드에 의존하지 않도록 함
- 이점:
- 명확한 역할 분담: FoodList는 음식 목록을 관리하고, FoodItem은 개별 음식 항목을 렌더링
- 유연한 변경: FoodItem의 레이아웃이나 스타일을 변경해도 FoodList에 영향을 주지 않음
- 재사용성: FoodItem 컴포넌트는 다른 곳에서도 독립적으로 사용 가능
-
'TIL' 카테고리의 다른 글
TIL - React Router에서 navigate와 Link의 차이점 (0) | 2024.06.20 |
---|---|
TIL - React 훅 소개 (0) | 2024.06.19 |
TIL - 리액트 컴포넌트 설계, SOLID 5원칙 (0) | 2024.06.17 |
TIL - 상태 관리 도구 비교: Redux, Zustand, React Query (0) | 2024.06.14 |
TIL - React 컴포넌트의 생애주기 (0) | 2024.06.13 |