즐거운 코드리뷰

김정용·2024년 9월 2일
2

Today I Learned

목록 보기
18/21
post-thumbnail

이번 부트캠프 첫번째 프로젝트가 드디어 끝났다.

간단한(?) api만 짜는 일이라 시간이 짧았지만,, 그럼에도 나에게는 쉽지만은않았고 일주일동안 새로운 지식들을 많이 습득하게된 프로젝트 같다!

코드리뷰

코드리뷰. 어떤 사람들에게는 무섭고 어떤 사람에게는 기대되는 순간이다.

나는 후자인것 같다. "내 코드는 완벽한데 뭐가 불편해?" 라기 보다는 "다른 사람이 봤을때 내가 짠 코드의 아쉬운 점은 무엇일까?" 라는 내가 완벽해지기 위한 퍼즐을 찾는 과정같아서 좋다.

저번 부트캠프때도 그렇고 팀원들이 내가 짠 코드를 PR한 후 리뷰를 너무 잘 해주셔서 이제 리뷰가 없으면 아쉬운 느낌이다.

이번 프로젝트 중 받은 리뷰들을 정리해본다.


Store

나는 이번 프로젝트에서 가게와 관련된 Store 도메인과 상품과 관련된 Product 도메인을 맡았다.

두 도메인 모두 간단한 CRUD 동작이였지만 처음해보는 조건, 처음사용해보는 것들 덕분에 머리속이 복잡했던 일주일이였다.

👎 중복처리 1 (Exception)

내가 의도해서 완벽한 처리 를 위해 예외처리를 두번한거면 모르겠지만,, 정신없이 개발하면서 중복으로 예외처리를 해놓은 부분이 있었다.

가령 서비스단 메소드에서 .orElseThrow를 통해 예외처리를 했음에도 null인지 다시 확인한다거나 등등.

다시 말하지만 의도된 동작이면 모를까 그냥 헷갈려서 중복적으로 처리된 부분은 아쉽다.

👎 중복처리 2 (Lombok)

@Builder 를 사용하면서 @AllArgsConstructor를 사용한 점

이것도 좀 그렇다. Builder는 객체생성시 모든 필드를 인자로 받게 해준다.

이는 @AllArgsConstructor 와 중복된 동작을 수행한다.

의도하지 않은 중복된 동작은 내 코드를 복잡하게만 만들뿐이다.

👎 일관되지않은 응답 반환

지금까지는 ResponseEntity<<>xxxReDTO> 등을 이용해 메소드의 응답을 확인했다.

처음으로 ApiResponse를 사용해봤는데 이전 포스트에서도 볼 수 있듯. 만들어진 객체와 메시지를 따로 볼 수 있어 좋았다.

그런데, 익숙하지 않아서인지 몇몇 메소드에는 적용을 하고 또 어떤 메소드에는 원래 방식대로 되어있고 일관성이 없었다.

PR전에 꼭 다시 한번 확인하는 습관을 들이자..


Product

두번째로 Product이다.

첫번째 Store를 다 끝낸 후에 시작된 작업이라 부족했던 부분을 그나마 보안해서 리뷰가 좀 적어지긴했다. ㅎㅎ...

👎 매핑의 무지,,,,

아직 외래키를 사용하는 부분에대해 매핑하는 부분이 헷갈린다..

일대다 일대일로 관계가 맺어진 경우 공부를 더 해봐야하지만 Long이나 String 대신 해당 객체를 사용한다.

실제로 ide에서 빨간줄을 뱉는다.

객체로 매핑하는 이유는 객체지향적 설계에 있다.

엔티티 간의 관계를 명시적으로 나타내기때문에 서로의 관계를 직관적으로 표현된다.

추가로 JPA에서 제공하는 지연로딩, 즉시로딩으로 해당 객체를 사용하는 시점에 필요한 데이터를 자동으로 가져올 수 있다.

ex) Order가 Store를 참조할 때, JPA는 Order를 통해 Store 객체를 접근할때 자동으로 데이터를 로드

그리고 연관된 데이터를 가져오는 경우에도 편리하게 사용된다.

가령 주문했던 가게의 가게이름을 알고싶다면 order.getStore().getName() 이렇게 order 엔티티에서도 편리하게 store에 관련된 정보를 가져올 수 있다.

👎 넌 null이면 안돼. 근데 넌 null이야.

컬럼을 명시할때 분명 nullable = false로 필수 입력을 해놓고선 toEntity() 메소드에는 정작 데이터가 들어가 있지 않게 코드를 짜놨다 ㅎㅎ...

마치며

코드리뷰를 하면서 두가지를 매번 느낀다.

- 첫번째로

어떻게 이렇게 자세하게 설명해주지? 영업비밀 아닌가? 같이 성장을 원하는 사람들이 이렇게나 많구나..

코드리뷰를 잘해주시는 분들은 지식의 영역이 확실히 넓은 사람들인것 같다.

레퍼런스도 착착 첨부해주시고 예시도 들어주시고... 진심으로 멋있다.

- 두번째로

내가 그렇지 못해 미안하다.

나도 받은만큼 해드리고싶은데,, 내 눈에는 그분들의 코드는 결점이 보이지 않는다.

사실 내가 못찾는게 맞겠지 그렇기에 더 열심히 많이 배워야한다.

나도 지금까지 받은 코드리뷰들처럼 다른 분들에게 되돌려주고싶다.

내 코드리뷰가 그 사람한테 도움이된다면 엄청 기분이 좋을 것 같다 :)

👍 칭찬(?)

코드리뷰로 칭찬은 처음 받아봤다.

칭찬인가? 아닌가? 일단 기분은 좋다 :)

뭐 당연한 로직이지만 기분은 좋다고~

profile
누군가의 롤모델이 될 때까지😇

0개의 댓글