이번 프로젝트를 진행하면서 CodeMetrics 를 사용해서 SonalLint 를 적용하여
코드의 복잡도를 최대한 낮추면서 작업을 해왔다. 초록색이 아니면 수정하려고 했고 초록색이여도
EveryThing Is Cool! 이 보이지 않으면 뭔가 수정을 해야하나 고민하면서 코드를 작성했다.
1차 MVP 가 끝난 지금 제대로 코드를 돌려보았다.
버그가 발생한 곳을 찾아보았다.
UserController 에서 Null 체크를 하지 않아서 발생한 버그가 많았다.
이부분은 코드리뷰에서 말씀드리긴 했었는데 개인사정이 바쁘신지 아직 해결되지 않은것같다.
내 파트가 아니여서 함부로 건드릴수는 없지만 내가 담당한 부분에서의 버그는 0 이라 다행이였다.
내 코드중에도 냄새나는 코드가 있었다. QueryDsl 을 사용해서 DTO 로 값을 뽑아오기 위해 사용한건데
파라미터가 너무 많다고 줄이라는거같다. 사실 여기서도 연장되는 고민이 하나 있는데 추가 기능 요청에 따라 기존에 Product Entity 에서 하나의 필드가 추가된 새로운 Entity 가 필요했었고 이걸 CartProduct 라는 엔티티로 만들어 필드에 Product 를 넣어놨다 근데 생각해보니까 Product 를 부모로 하는 자식클래스를 생성하여 수량만 추가해주면 더 좋지 않았을까 싶다.
동적쿼리를 해결하기 위해 만들어놓은 메서드들 중에 가격으로 상품을 찾거나 비교하기 위해 만들어둔 메서드를 아직 사용하지 않았다.
혹시나 추가기능 구현을 하게 된다면 분명히 사용할 예정이라 나두었다.
맨 처음 코드에서는 Header 를 사용해서 유저 정보를 가져오는 로직이 모든 메서드에서 중복으로 사용되고 있어서 우선 하나의 메서드로 만들었다.
그런데 이 메서드를 사용해서 유저정보의 모든 컬럼들을 조회하는게 효율적이지 않은거 같아서
유저정보를 꼭 조회해서 사용해야 하는 부분에선 이 메서드를 사용하고 그렇지 않은 부분에선 UserId 를 전달하여 Repository 부분에서 처리하는게 좋을거 같다는 생각이 들었다.
개발 초기 Cors 설정에 대해 모든 URL 에 대해 허용해놓았다.
이제 프론트도 배포가 되었으니 프론트에 의한 요청에만 응답하도록 수정하면 되겠다.