프로젝트 리팩토링 피드백
1. 사용하지 않는 파일 삭제
- 프로젝트에 사용하지 않는 파일이 깃허브에 업로드되어 있어 관리 효율성이 떨어짐
- 조치: 사용하지 않는 파일과 코드를 확인 후 삭제
2. 모델 필드 설명 방식 개선
- 모델의 주석 대신
verbose_name
속성을 사용하여 각 필드의 역할을 명확히 설명하는 Django 권장 방식을 따름
verbose_name
은 모델 필드에 대한 가독성을 높이고 관리자를 포함한 여러 UI에서 더 직관적인 필드명을 제공
3. View를 가볍게 유지하기 위한 리팩토링
- "Fat Model, Thin View" 원칙을 적용하여 뷰를 최대한 단순화
- 조치 방향:
- 복잡한 비즈니스 로직을 모델의 메서드 또는 별도의 유틸리티 함수로 이동
- 예: ReviewAPIView
에서 annotate
와 관련된 정렬 로직을 모델 메서드로 추출
![](https://velog.velcdn.com/images/gyu_p/post/d1f2942c-1c87-4664-99d2-bc40b8936fc2/image.png)
4. DB 성능 최적화를 위한 db_index
활용
- 검색 및 필터링이 자주 사용되는 필드에
db_index=True
를 설정
- 예시:
Review
모델의 app_id
필드
Game
모델의 name
필드
5. Django 서브쿼리 활용
- View에서 반복적으로 호출되는 쿼리를 최적화하기 위해 Django ORM의 서브쿼리를 사용
- 적용 대상:
GameDetailAPIView
에서 my_review
필드 로직
6. PEP8(파이썬 스타일 가이드) 준수
import
순서를 정리하고, 그룹별로 나누어 가독성을 향상
- 조치:
- 표준 라이브러리, 서드파티 라이브러리, 로컬 앱 순서로 구분
7. 에러 메시지 커스터마이징
8. 소프트 삭제 도입
- 데이터 삭제 시 실제로 데이터베이스에서 제거하지 않고, Boolean 필드를 사용하여 삭제 상태를 관리
- 적용 이유:
- 삭제된 데이터를 복구하거나 로그를 추적할 수 있도록 보장
- 구현 방향:
is_deleted = models.BooleanField(default=False)
필드를 추가하고, 쿼리셋에서 기본적으로 필터링
참고 자료