Back-end/카카오테크캠퍼스

[카카오테크캠퍼스] 5,6주차 과제 코드리뷰 정리

잔디🌿 2024. 9. 9. 11:36

5,6주차는 카카오 로그인와 배포라 피드백이 많이 없어서 합쳤다.

 

code를 yml파일에 넣어서 깃허브에 올리지 않도록 한다.

카카오 로그인을 구현할 때 code와 client_id가 필요하다. 그런데 이 값을 깃허브에 올리게 되면 보안상 많은 문제가 생길 수 있다. 그래서 이런 정보는 yml파일에 넣어서 git에 올라가지 않도록 해아한다.

 

api에 들어가는 body는 dto로 만들어서 관리하자.

나도 처음에는 이러한 방법으로 구현하려고 했으나, 왜때문인지 잘 되지 않았다.

그래서 이 부분에 대해서 팀원분들께 여쭤보았더니 마침 같은 문제로 고민하다가 해결하신 분이 코드를 알려주셨다.

 

이 부분에서는 dto를 바로 넣으면 안된다. map 형태로 넣어야 하기 때문이다.

ObjectMapper objectMapper = new ObjectMapper();
var dto = new getTokenDto("authorization_code",client_id,"http://localhost:8080/api/kakao/code",code);

MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
Map<String, String> map = objectMapper.convertValue(dto, new TypeReference<Map<String, String>>() {}); // (3)
body.setAll(map);

var request = new RequestEntity<>(body, headers, HttpMethod.POST, URI.create(url));

그래서 위와 같이 MultiValueMap으로 body객체를 만들고, objectMapper을 통해서 dto를 map형태로 변환한다.

그 다음 이 map을 body에 set해준다. 이후 해당 body를 RequestEntity에 넣어 보낸다.

 

@Value를 사용하면 final 키워드를 사용할 수 없다. 왜일까

final 키워드가 들어간 변수는 값의 초기화가 객체 생성 시점에 이루어져야 합니다. 하지만 @value는 의존관계 주입 시점에 동작하는데 이 과정은 생성자가 이미 호출된 후 입니다. 따라서 @value 어노테이션이 있는 변수에 final 키워드를 쓸 수 없습니다.

 

@DisplayName으로 테스트 함수의 용도를 적어두자.

테스트코드 명에도 테스트하고자 하는 내용이 들어가긴 하지만, @DisplayName으로 더욱 명확하게 작성하면 좋다고 한다. 이렇게 설정하면 

이와 같이 테스트를 돌렸을 때에도 displayName에 있는 값으로 뜨는 것을 볼 수 있다.

 

ReadMe에 Todo를 작성 할 때 -를 사용하자

다른 사람의 pr을 참고해서 쓰다보니까 그냥 [0][x]이런 식으로 쓰면 되는 줄 알고 썼었는데 알고보니 -를 같이 써야 체크리스트가 나왔다.

 

클라이언트분들과 함께 API 명세를 변경해본 경험은 어땠는지

사실 우리는 클라이언트랑 거의 별개로 프로젝트를 진행하였다. 그래서 api명세서도 없었어서 각자 미션에 대해 해석한 대로 프로젝트를 수행하였다. 그런데 이 상태에서 클라이언트랑 합치려니 바꿔야 하는 것들이 많았다. 이들을 요구에 맞게 변형하려니까 고쳐야 할 것이 많았고, 이러다보니 그 동안 공들여서 정리해둔 코드가 엉망이 되었다. 나 뿐만 아니라 팀원들도 이것때문에 많이 아까워했다.

 그래서 나중에 팀원들과 함께 프로젝트를 할 때에는 꼭 API명세를 정확하게 해야겠다고 생각했다. 이러한 방식으로 배포를 경험하도록 한 것은 카테캠의 빅픽쳐가 아닐까 싶었다.

 

기본으로 지급되는 포인트에 관한 로직은 엔티티에

우리 프로젝트에서 회원가입을 하면 1000포인트를 기본으로 주는 로직이 있었다.

나는 처음에 이 기능을 Service안에 넣었었다. 하지만 이를 Member엔티티클래스 안에 구현하는 것이 좋다고 하셨다.

그래서 나는 이 로직을 엔티티 생성자 안에 넣어서 객체가 만들어지면 1000포인트가 자동으로 들어가도록 설정하였다.

 

 

이렇게 모든 step2과정이 끝났다. 정말 다행히 모든 과제가 다 통과하였다!! 오예

코드리뷰 받는 과정은 거의 처음이었는데 정말정말 유익했다. 운 좋게 정말 좋으신 멘토님을 만나서 많이 성장 할 수 있었던 것 같다.

step3에서도 멘토님들의 피드백을 많이많이 받도록 노력해야겠다.