우아한 테크코스 프리코스 1/2주차 복기

CupRaccoon·2022년 11월 9일
0

0. 복기의 목표

복기하듯이 내가 어떤 생각으로 코드를 짰고 다음부터는 이렇게 짜면 안되겠다 또는 피드백을 받고 이런 식으로 짜는게 맞구나 와 같은 느낌으로 나의 생각(코드)ㅡ>어떤 부분이 문제였는지ㅡ>피드백와 같은 흐름으로 작성하고자 한다. Peer Review와 비슷한 맥락으로 일종의 Self Review라고도 할 수 있을 것 같다.

기본적으로 1주차, 2주차 모두 피어 리뷰나 공통피드백 등에서 얻은 피드백들 중 금방 수정할 수 있는 부분들은 바로 수정해서 커밋했기 때문에 바로 반영한 피드백 + 다음 주차에 반영된 피드백들을 위주로 다뤄본다.

1. 1주차-온보딩

1주차 코드 : https://github.com/CupRaccoon/java-onboarding

1주차같은 경우 Java를 아예 모르는건 아니지만 깊게 배운지 얼마 안되서 썩 잘쓰는 편이 아니라서 처음부터 Java 언어에 익숙해지는 것을 목표로 삼았다. 그리고 가능하다면 최대한 좋은 코드를 짤려고 노력했던 것 같다.

1-1. 요구사항 준수

//Problem 7
for(int i = 1; i <userNumber; i++){
            for(int j = 1; j < userNumber; j++){
                if(i != j && friendMatrix[0][j] && friendMatrix[i][j]){
                    recommendScore.put(i,recommendScore.get(i)+5);
                }
            }
        }

문제 7번의 함께 아는 친구를 구하는 부분의 코드인데 원래 10점을 줘야하는데 실수로 5점을 주도록 작성했다. 제출 전에 요구사항을 한 번 더 꼼꼼히 보거나 테스트 코드를 작성했다면 아마 틀렸다는 것을 찾아 낼 수 있었을 것 같다.
공통피드백의 첫 번째 내용이 "요구사항을 정확히 준수한다"인 걸 보고 아... 1번부터 걸렸구나 싶었다. 코드를 열심히 짜놓고 숫자 하나 때문에 아예 틀려버렸으니까 다음부터는 그러지 않을 기억에 잘 남을 피드백을 얻었다고 생각한다...

1-2. 피어 리뷰

if((input.get(1) - input.get(0)) == 1){
            return true;
        }
        return false;
}

1주차같은 경우 피어 리뷰를 올렸었고 위의 원래 코드 대신에 아래와 같이 작성하는 것이 낫다는 피드백을 받았다.

        return (input.get(1) - input.get(0)) == 1;

사실 1-2의 코드같은 경우 지금 생각해보면 일종의 쿠세/습관이었어서 1-1같은 경우 제출 기한이 끝나고 내 코드를 보다가 스스로 발견했었지만 1-2 같은 경우는 아마 혼자서는 발견하지 못했을 것이라고 생각한다. 피어 리뷰가 왜 필요한지 알 수 있었다.

1-3. 1주차에서 배운 것

아, 커밋 컨벤션도 1주차에서 배울 수 있었다.

  1. 요구사항 꼼꼼히 읽기
  2. 테스트 코드 작성
  3. 피어 리뷰의 중요성
  4. Boolean Return 방식
  5. 커밋 컨벤션

2주차-숫자야구

2주차 코드 : https://github.com/CupRaccoon/java-baseball

2주차같은 경우 미션 공유 메일에서 강조한 함수를 분리하고, 각 함수별로 테스트를 작성하는 것과 그를 통해서 좋은 코드를 작성하는 것에 방점을 많이 두고 진행했던 것 같다.
개인적으로 평가했을 때 1주차 코드에 비해 2주차의 코드가 훨씬 깔끔하고 잘짜여졌다고 생각해서 1주차때 미션을 진행하면서 또 피어 리뷰를 하면서 다른 사람들의 코드를 보고 실력이 늘었다는게 느껴졌던 것 같다.

2-1. static final과 indention

1주차에 피어 리뷰를 하면서 static final을 이용해 작성한 코드들을 많이 봤다. 가능하다면 2주차에 그러한 방법을 적용시키고 싶었는데 생각처럼 잘 되지 않았다. 결국 사용하지 못했고 2주차 제출 기한이 끝나고 그에 관련한 질문글을 올렸다.

질문글 : https://github.com/orgs/woowacourse-precourse/discussions/728

질문글에 대한 답변이 너무 좋은 피드백이여서 감동받았었다. 그래서 바로 코드를 피드백받은 것을 기반으로 리팩토링했다.

Refactoring commit : https://github.com/CupRaccoon/java-baseball/commit/73fb57dbd640bf06c547cf699b212182e5dd8fef

2-2. 2주차에서 배운 것

2주차같은 경우 스스로 코드를 짜면서 이 부분을 어떻게 짤까? 와 같은 부분들에서 전반적으로 많이 배웠던 것 같고 그 중에서도 구체적으로 배운 것이라고 한다면 Exception을 다루는 법과 IO 테스트 코드 작성법을 배울 수 있었다.
추가로 숫자 야구 피드백 강의를 보면서 README.md 작성도 3주차부터는 좀 더 신경써서 할 수 있도록 해야겠다고 생각했다.

  1. static final
  2. Collection API
  3. Exception 다루기
  4. IO 테스트 코드
  5. README.md 작성법(기능목록)
profile
github : https://github.com/CupRaccoon

0개의 댓글