우아한 테크코스 5기 프리코스 2주차 미션 후기

정훈희·2022년 11월 12일
0

Java

목록 보기
4/6
post-thumbnail

2주차 미션 Repository

https://github.com/woowacourse-precourse/java-baseball

내 Repository

GitHub - JeongHunHui/java-baseball at JeongHunHui

진행과정

  1. 객체 별 기능 체크리스트 작성
  2. 기능구현
  3. 기능을 테스트할 테스트코드 작성
  4. 리팩토링

저는 위와 같은 순서로 2주차 미션을 진행하였습니다.

또한, 2주차 미션이 끝난 뒤에 다른 참가자의 코드와 2주차 공통 피드백을 보며 부족한 점을 찾고, 수정하였습니다.

느낀점

  1. 기능 체크리스트를 상세히 작성하자

    대신에, 기능을 구현하다 보면 언제든지 변경될 수 있으므로 세세한 부분을 정리하기 보다는 구현해야 할 기능 목록을 정리하는데 집중하자. 또한, 예외적인 상황도 기능목록에 정리한다.

    이번 미션을 진행할 때는 기능 체크리스트 작성을 너무 대충해서, 이후에 구현할 때 기준이 명확하지 않아서 혼란스러웠던 것 같다.

  2. 체크리스트를 바탕으로 기능별로 Commit하자

    이번 미션을 진행 할 때 체크리스트를 대충 작성했고, 한번에 여러 기능을 구현하려다 보니 Commit 메세지도 분명하지 않고, 여러 기능을 한번에 Commit 하는등 지저분했던 것 같다.

  3. 리팩토링(클린코드) 연습하자

    참조: https://zzang9ha.tistory.com/307

    indent(들여쓰기 횟수) 신경써서 하기 → 2 이하로 하기

    image

    코드 복잡도 신경쓰기(IntelliJ 플러그인 “CodeMetrics”사용, 4~5 정도가 적당)

    image

    조건식을 메소드로 빼서 이해하기 쉽도록 하기

    • ex: hasDuplicatedDigit() image
  4. 함수가 한가지 기능만 담당하게 하자

    함수의 길이에 제한을 두어 함수를 분리하는 연습을 하자.

    또한, 여러 함수에서 중복되는 코드가 있다면 분리하여 재사용을 하도록 하자

  5. 단위 테스트 공부하자

    JUnit의 @ParemeterizeTest 등 여러 기능들을 활용해서 효율적인 테스트 코드 짜기

    처음부터 큰 단위의 테스트를 만들지 말고, 작은 단위부터 만들어 나간다.

  6. Enum등을 활용하여 상수 관리

    코드에 값을 하드코딩 하지 않고 Enum등을 통해서 체계적으로 관리하자.

    • ex: 게임 진행 중에 출력되는 메세지들을 GameMessage Enum에서 관리
      public enum GameMessage {
        GAME_START_MESSAGE("숫자 야구 게임을 시작합니다."),
        START_INPUT_MESSAGE("숫자를 입력해주세요: "),
        TRY_COUNT_MESSAGE("번의 시도 끝에"),
        GAME_FINISH_MESSAGE("개의 숫자를 모두 맞히셨습니다! 게임 종료"),
        CHECK_RESTART_MESSAGE("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."),
        IS_INVALID_VALUE("잘못된 값을 입력하셨습니다. 다시 입력해주세요.");
        private final String message;
      
        GameMessage(String message) {
          this.message = message;
        }
      
        public String getMessage() {
          return message;
        }
      
        public static String getFinishMessage(int tryCount, int numberDigit) {
          return tryCount
              + TRY_COUNT_MESSAGE.getMessage()
              + " "
              + numberDigit
              + GAME_FINISH_MESSAGE.getMessage();
        }
      }
profile
DB를 사랑하는 백엔드 개발자입니다. 열심히 공부하고 열심히 기록합니다.

0개의 댓글