[2021-02-26 금] TIL

노을·2021년 2월 28일
0

TIL

목록 보기
49/81

리뷰어의 미션4 코드리뷰

  • https://github.com/codesquad-members-2021/java-chess/pull/150

  • 리플렉션을 이용해 클래스 이름으로 체스 유닛등을 구별했었는데, 좋지 못한 코딩습관이라고 지적을 당했다.

  • Reference 타입은 기본적으로 final을 하면 좋다는 의견을 받았다.

    • 나는 Primitive 타입이 아닌 Reference 타입인 List나 StringBuilder 는 final로 지정을 해주어도 내부 수정이 가능해서 햇갈렸었다.
    • 기본적으로 final을 해주는 이유는 개인적인 선호도인 이유도 있다고 한다.
    • 자신이 생각했을 때, 해당변수가 재할당이 필요하지 않을 것 같고, 앞으로도 재할당이 없을 것이라고 생각된다면 final로 해두는것이 안전하다.
  • 이번 미션을 상속을 통해 구현을 했는데, 객체를 구별하기 위한? 의미없는 상속임을 지적받았고, 가능한 상속을 지양하면 좋다는 피드백을 받았다.

  • 상속 받는 자식 클래스가 증가할 수록 클래스의 수는 기하급수적으로 많아질 것이고, 조상클래스의 변화는 이러한 모든 자식 클래스에게 변화를 주므로 유연한 변경이 어려워진다고 한다.

  • 재귀와 공재귀에 대한 키워드를 알 수 있었다.

    • 기존의 나는 재귀함수를 통해 반복문을 대신할 수 있다? 정도로만 학습을 하고 간단한 실습을 구현할 수 있는 정도였는데, 이러한 재귀함수는 모든 호출 메소드가 콜스택에 계속해서 쌓이는 방식으로, 중간 연산결과를 알 수 없을뿐더러 메모리가 부족할 수 있기때문에 공재귀를 사용한다고 한다.
    • 구글에 검색을 해보면 공재귀에 관한 레퍼런스가 대부분 코틀린임을 확인할 수 있었고, 개념적으로 간단하게만 파악을 하였다.

그룹원의 미션5 코드리뷰

미션4 머지가 진행되지 않아 미리 진행한 미션5를 그룹원들에게 코드리뷰를 요청했었다.

  • 객체에 담긴 요소를 일괄 변환하는 for loop를 stream으로 변환하면 좋을 것 같다.
  • 객체의 논리적 동치성을 비교할 때, 굳이 객체를 새로 만들 필요 없이 기존 객체를 이용해라.
  • switch문은 절차지향 방식이다? 꼭 써야하는지 다른 방식은 없는지 고려할 것을 추천받았다.
  • 메서드명을 지을때 동사를 맨 앞에 작성하면 좋을 것 같다.
  • 인덱스를 매게변수로 받아 무언가 처리하는 메소드를 작성할 때, 예외처리에 신경을 써라.

느낀점

  • 나름 깔끔하게 코드를 구현하기위해 신경써서 작성 한 것 같은데, 역시 honux가 말한대로 코드는 똥이다!가 맞는것 같다. 나 혼자서 내 코드를 가꾸어봤자 좋은 코드인지 판단하기 어렵다. 즉, 애지중지 할 필요가 없다는 것이다. 미션5에서 체스 유닛들의 점수를 계산하는 메서드를 구현할 때 stack을 활용해서 구현했다는 방식이 너무 획기적이라고 생각했고, 너무 깔끔한 코드라고 상당히 뿌듯해했다🤣. 그런데 자바지기님의 레퍼런스 코드를 확인해보니 메서드들을 역할에 맞게 잘분리하셔서 10줄 안에 작성된 것을 보고 나의 코드는 많은 for loop와 if문으로 엄청나게 복잡했다라는 것에 정말 충격을 받았다.
profile
카르페디엠

0개의 댓글

관련 채용 정보