코드리뷰가 익숙하지 않은 분들을 위한 코드리뷰 하는 법을 정리해보고자 한다.
(사실 그게 바로 나...🥲)
이번에 네 번째 우테코 미션을 하면서 리뷰어에게 코드 리뷰를 요청했다.
여러 코멘트가 달렸고 각 코멘트마다 열심히 답변을 작성해서 다시 리뷰 요청을 보냈다.
그런데 돌아온 리뷰에는 뭐지? 내 의견과 질문에 대한 아무런 답변도 돌아오지 않았다.
뭐지.. 뭔가 이상한데... 하고 다시 내 답변들을 보니 평소와 달리 "Pending"이라는 문구가 붙어있었다.
그렇다. 리뷰어에게 내 답변이 전송되지 않은 것...! 얼마나 이상하게 생각했을까🤔
그렇다면 뭐가 문제였는지, 어떻게 하면 되는지 한번 알아보자.
직접 테스트해보기 위해 계정 2개를 사용했다.
1. PR 보내기
PR(Pull requests)는 repository별로 확인이 가능하다. New pull request를 통해 새로운 PR을 만들 수 있다.
이때 PR의 제목과 내용을 작성할 수 있다. 이 부분은 PR 요청 이후에도 수정 가능하다.
2. comment 작성
이제 본격적으로 리뷰를 해보자.
PR에서 Files Changed로 가면 변경된 내용을 바로 확인할 수 있다.
리뷰를 달고자 하는 부분에서 +를 눌러 코멘트를 달 수 있고, 여러 열에 걸쳐서 리뷰들 달고 싶다면 해당 부분을 드래그하면 된다.
이때 Suggestion이라는 기능도 있다.
"~를 ~이렇게 하는 건 어떨까요?"처럼 코드 수정을 직접적으로 보여줄 때 사용하기 좋다.
코드 전/후를 비교해서 바로 확인할 수 있도록 해준다.
suggestion을 통해 제안된 코드는 깃헙에서 바로 커밋해서 적용할 수 도 있다.
이렇게 커밋한 경우 공동 커밋으로 등록이 된다. (커밋 옆에 동그라미 두 개!!)
만약 이렇게 제안받은 내용을 커밋할 부분이 많을 경우 Add suggestion to batch를 사용해 한번에 커밋도 가능하다.
3. comment 등록
또한 리뷰를 작성하고 등록을 할 때 여러 가지 옵션이 있다.
Add single comment를 선택하면 코멘트가 바로 등록된다.
(대신 이 경우 코드오너에게 등록할 때마다 연락(메일 등)이 간다. 리뷰가 많은 경우 아래 방식을 사용하는 것이 낫다.)
반면 Start a review를 누르면 코멘트가 등록되면서 옆에 Pending이라는 표시가 생긴다.
말 그대로 '보류 중'이라는 의미이다. 나에게는 보이지만 아직 상대방에게 전송이 되지 않은 상태이다.
Review changes를 보면 내가 작성한 pending 처리된 리뷰의 개수가 나타나있다.
최종적으로 Submit review를 해주어야 상대방에게 전송되고 보이게 된다. (중요)
이때 Submit review 선택지로 Comment, Approve, Request changes가 있다.
위 그림에 나와있는 것처럼 Comment는 단순한 코멘트를 남기는 것,
Approve는 승인하는 것으로 머지해도 괜찮다는 것,
Request changes는 승인하지 않는다는 것으로 수정해 달라는 것을 의미한다.
각 방식에 따라 아래와 같이 리뷰가 달리는 것을 확인할 수 있다.
4. 작성된 코멘트에 답변 달기
코드리뷰를 받고 나면 해당 코멘트에 답을 할 수 있다.
이 때도 마찬가지로 내용을 작성하고 전송하면 되는데, 내 코멘트가 pending 상태인지 아닌지 꼭 확인하기를 바란다.
(Pending 상태라면 Review changes를 잊지 말자!)
이번 경우는 항상 리뷰를 받기만 하고 직접 달아본 적은 없어 생긴 일이었다.
리플렉션을 적용했는데 리뷰어가 어디에 적용했는지 코멘트를 달아달라고 했고,
새로운 코멘트를 만들면서 Start a review 상태로 다른 코멘트들도 작성했던 것.
다행히 나중에 알게 돼서 리뷰어분께 양해를 구하고 다시 보내드리긴 했지만 살짝 당황스러운 에피소드였다.
리뷰어로부터 온 DM 답장 일부: "조금 이상하다 생각하긴 했는데" 🤦🏻♀️
그래도 지금이라도 알게 돼서 얼마나 다행인지 모른다.
앞으로는 이런 실수를 하지 않기를 다짐하며 이번 글을 마무리해 본다.
+ 항상 코멘트가 제대로 달렸는지 확인하자! 👍🏻
혹시 추가로 추천해주고싶은 기능이나 추가 설명이 있다면 공유해 주시면 감사드리겠습니다. 🙇♀️
'우아한테크코스 > 레벨 1 - Java' 카테고리의 다른 글
[Soft Skills] 레벨 1 글쓰기 - 유연성 강화 (0) | 2024.04.13 |
---|---|
[JAVA] JDBC 연결 (0) | 2024.04.04 |
[JAVA] 상태 패턴(State Pattern) with BlackJack (21) | 2024.03.19 |
[JAVA] 캐싱 활용하기 (0) | 2024.03.11 |
[JAVA] VO(Value Object) vs DTO(Data Transfer Object) with record (13) | 2024.03.05 |