https://github.com/codesquad-members-2021/java-chess/pull/150
리플렉션을 이용해 클래스 이름으로 체스 유닛등을 구별했었는데, 좋지 못한 코딩습관이라고 지적을 당했다.
Reference 타입은 기본적으로 final을 하면 좋다는 의견을 받았다.
안전
하다.이번 미션을 상속
을 통해 구현을 했는데, 객체를 구별하기 위한? 의미없는 상속임을 지적받았고, 가능한 상속을 지양하면 좋다는 피드백을 받았다.
상속 받는 자식 클래스가 증가할 수록 클래스의 수는 기하급수적으로 많아질 것이고, 조상클래스의 변화는 이러한 모든 자식 클래스에게 변화를 주므로 유연한 변경이 어려워진다고 한다.
재귀와 공재귀에 대한 키워드를 알 수 있었다.
재귀함수
를 통해 반복문을 대신할 수 있다? 정도로만 학습을 하고 간단한 실습을 구현할 수 있는 정도였는데, 이러한 재귀함수는 모든 호출 메소드가 콜스택에 계속해서 쌓이는 방식으로, 중간 연산결과를 알 수 없을뿐더러 메모리가 부족할 수 있기때문에 공재귀
를 사용한다고 한다.미션4 머지가 진행되지 않아 미리 진행한 미션5를 그룹원들에게 코드리뷰를 요청했었다.
honux
가 말한대로 코드는 똥이다!
가 맞는것 같다. 나 혼자서 내 코드를 가꾸어봤자 좋은 코드인지 판단하기 어렵다. 즉, 애지중지 할 필요가 없다는 것이다. 미션5에서 체스 유닛들의 점수를 계산하는 메서드를 구현할 때 stack
을 활용해서 구현했다는 방식이 너무 획기적이라고 생각했고, 너무 깔끔한 코드라고 상당히 뿌듯해했다🤣. 그런데 자바지기님의 레퍼런스 코드를 확인해보니 메서드들을 역할에 맞게 잘분리하셔서 10줄 안에 작성된 것을 보고 나의 코드는 많은 for loop와 if문으로 엄청나게 복잡했다라는 것에 정말 충격을 받았다.