Skip to content

[REFACTOR] 리팩토링 생각 #59

Description

@wonslee

📝 이슈 내용

추가하려는 기능에 대해 간결하게 설명해주세요

지금 너무 바쁘기도 하고 뭐가 정답이랄건 없어서, 프로젝트가 끝나고 한번씩 같이 고민해보면 좋을 것 같습니다.

API URL

저는 지도 도메인의 경우 API URL가 /stores/map/... 식으로 가는게 낫다고 생각하는데, 어떻게 생각하시나요?
환경 API의 경우 /environment -> /members/environment 식이 더 좋은 것 같아요. 환경 데이터가 결국 회원들의 데이터여서요!
회원 탈퇴의 경우 members/delete 는 정말 삭제를 의미하는 것 같아서 revoke, leave

도메인 의존 구조

현재 favorite, map 도메인은 Store 객체에 강하게 의존하는 상태입니다. 그래서 Menu, StoreImage 처럼 아예 Store 도메인 패키지에 넣는 것도 방법인 것 같아요.

현재 mapRepository 메서드들의 경우 가게를 조회하는게 끝이라서 가게쪽의 책임이고, storeRepository에 책임(메서드)들을 위임하도록 하는게 좋다고 생각해요.

시큐리티 - 인증 객체 및 권한 체크

전에 같이 얘기했던 UserDetail 구현체로 동현님이 만들어주신걸 잘 쓰고 있습니다만, 더 좋은 방식은 없을까(지원님이 말씀하신 MemberId 커스텀 어노테이션 등) 고민해보면 좋을 것 같습니다.

권한 체크도 @PreAuthorize 어노테이션을 통해 권한 체크를 하는 방법이 있다고 들었는데, 알아보면 좋을 것 같구요.

공통 응답 형식 및 글로벌 예외 처리 핸들러

컨트롤러들의 공통 관심사인 statusCode, message 등이 리터럴 값으로 들어가고 있어서 이 역할을 ApiResponse 부분에서 처리하면 어떨까 생각합니다.

그리고 글로벌 예외 처리 핸들러에서 잡는 예외가 한정적이고, 현재 나눠놓은 커스텀 예외 객체들과 예외 메세지 이넘 객체(ExceptionMessage)들을 나눠놓은 의미가 그렇게 크지는 않은 것 같아요. API 명세와도 관련 있는 부분인데, 예외가 발생했을 때 정확히 어떤 문제인지 알려주는게 더 좋다고 생각합니다.

테스트 코드 (원석)

서비스 메서드들에 대한 유닛 테스트

로깅 통일

AOP(LoggerAspect.java)를 통한 로그 공통 관심사를 최대한 한 곳으로 응집시키기

판매자 관리 페이지상의 가게 개수

현재는 가게가 1개라는 전제하에 관리가 이뤄지는 방식.
그러나.. 하나의 사업자 등록 번호에 여러 점포를 운영할 수 있다.
10개 점포를 운영하는 사장님의 입장에서는 회원가입을 10번 해야 함.

음... 근데 또 이걸 재고 등록하고 관리하는 사람은 직원일거다. 사장님 혼자 모든 점포 재고를 일일이 확인하긴 어려우니까.

그리고 지금 가게를 관리할 수 있는 페이지가 없는걸로 알고 있는데...
추후... 보류..

순환 참조 문제 (지원)

StoreQueryService-ReviewQueryService 간 의존관계가 양방향이어서 순환 참조되는 문제.

관리자 도메인 분리 (동현)

API URI에 /admin 포함시키고, Controller, Service.

인증 인가 여부 적용안된 API들

/api/maps/.... JWT가 없어도 작동함.
@PreAuthorized() 어노테이션이 제대로 동작하지 않는듯.

✅ 체크 리스트

  • 배.동.석 프로젝트 스터디 진행하기

🛰️ 관련 요구사항

  • 요구사항 타입 - 번호: ~~~~~

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions