이 글은
- 이글은 제가 코드스쿼드 백엔드 과정을 들으면서 피어-코드리뷰 받은 사항을 정리한 글 입니다.
- 리뷰받은 사항을 제가 100%공감하는 그런 상태가 아니기 때문에, 리뷰받은 이 지식들을 나중에 언젠가라도 다시 보면서 스스로 발전시키고 싶어 정리합니다.
코드리뷰 사항
lang.object 의 메서드들을 @Override 하는 이유
- 자바랑의 오브젝트의 메서드들을 오버라이드해서 equals, hash 등을 구현하는게 일반적인데, 이렇게 하는 이유는
- 콜렉션들과 함께 사용할 때, 개발자의 의도대로 동작하게 하기 위함 (자바 개발자들간의 약속, 디-펙토임)
- 또한 set 이나 map 자료구조에 담는 경우, 자바 내부적으로 key 값으로 사용하는데 필요하다(equals)
- dry 원칙 : 바보짓하지말고, 만들어놓은거 수입해다가 쓰자
제거당해야 마땅한 코드들
- 주석
- 사용하지 않는 변수(for문 위애 조용히 숨어있던..)
- System.out.print문들 ->> 개발중에 찍어보던건데 하나 남아있었다..!!
Null이 리턴될 수 있는 경우
list <Int> myList = new Arraylist<>();
String result;
for(Int temp:myList) {
if(temp == target) {
result = Inteager.parseInt(temp);
return;
}
}
- 위와 유사한 코드였는데, 얼핏보면 null 이 리턴될일이 없을듯 했는데, list에 내가 찾는 값이 안들어있는 경우, 탐색에 실패하고, result라는 string 타입 참조변수에는 null 이 들어가게 된다.
코드 포멧팅 관련
- =연산자 좌우로 공백 한칸씩
- 파일의 맨 마지막에 빈줄 한줄 추가(LF+CR)
- 로그, 로거를 막 다 쓰지말고, 어디서 발생하는지 생각하고 추적할 수 있도록 쓰자
네이밍 컨벤션
- askQuestion 이런건 네이밍이 글쎄.. 쪼금 이상하다
- isSameUser >> user 클래스에 equals 오버라이드해서 구현해라
- 용어통일
- 어디서는 qna, 또 딴데서는 question 이렇게 돌려쓰지말고 딱 하나로 통일해라!
null 리턴되는 경우에 Optional 을 리턴해주는데 값을 .get 으로 받아오는건 안티패턴이다
- 왜 그런지 학습 필요 (로치-디온) 리뷰 참고