https://github.com/woowacourse-precourse/java-baseball
GitHub - JeongHunHui/java-baseball at JeongHunHui
저는 위와 같은 순서로 2주차 미션을 진행하였습니다.
또한, 2주차 미션이 끝난 뒤에 다른 참가자의 코드와 2주차 공통 피드백을 보며 부족한 점을 찾고, 수정하였습니다.
기능 체크리스트를 상세히 작성하자
대신에, 기능을 구현하다 보면 언제든지 변경될 수 있으므로 세세한 부분을 정리하기 보다는 구현해야 할 기능 목록을 정리하는데 집중하자. 또한, 예외적인 상황도 기능목록에 정리한다.
이번 미션을 진행할 때는 기능 체크리스트 작성을 너무 대충해서, 이후에 구현할 때 기준이 명확하지 않아서 혼란스러웠던 것 같다.
체크리스트를 바탕으로 기능별로 Commit하자
이번 미션을 진행 할 때 체크리스트를 대충 작성했고, 한번에 여러 기능을 구현하려다 보니 Commit 메세지도 분명하지 않고, 여러 기능을 한번에 Commit 하는등 지저분했던 것 같다.
리팩토링(클린코드) 연습하자
참조: https://zzang9ha.tistory.com/307
indent(들여쓰기 횟수) 신경써서 하기 → 2 이하로 하기
코드 복잡도 신경쓰기(IntelliJ 플러그인 “CodeMetrics”사용, 4~5 정도가 적당)
조건식을 메소드로 빼서 이해하기 쉽도록 하기
함수가 한가지 기능만 담당하게 하자
함수의 길이에 제한을 두어 함수를 분리하는 연습을 하자.
또한, 여러 함수에서 중복되는 코드가 있다면 분리하여 재사용을 하도록 하자
단위 테스트 공부하자
JUnit의 @ParemeterizeTest 등 여러 기능들을 활용해서 효율적인 테스트 코드 짜기
처음부터 큰 단위의 테스트를 만들지 말고, 작은 단위부터 만들어 나간다.
Enum등을 활용하여 상수 관리
코드에 값을 하드코딩 하지 않고 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();
}
}