-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[숫자 야구 게임] 임주민 과제 제출 PR입니다. #10
base: main
Are you sure you want to change the base?
Conversation
요구사항을 충족하지 못합니다. 테스트 코드를 실행시킨 후 통과되도록 코드를 수정해주세요. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
확실히 협업경험이 있어서 그런지 신경써서 코드 작성한 티가 납니다!
요구사항 2가지 정도를 처리 안한 것 같은데 테스트 결과를 바탕으로 어디에서 문제가 발생했는지 파악해보세요! 차근차근 리팩토링 해봅시다.
public final class Constants { | ||
public final class Number { | ||
public static final int LENGTH = 3; | ||
public static final int MIN_VALUE = 1; | ||
public static final int MAX_VALUE = 9; | ||
} | ||
|
||
public final class Symbol { | ||
public static final String END_GAME = "2"; | ||
public static final String RESTART_GAME = "1"; | ||
} | ||
|
||
public final class GameMessage { | ||
public static final String INPUT_NUMBER = "숫자를 입력해주세요 : "; | ||
public static final String END_GAME = "개의 숫자를 모두 맞히셨습니다! 게임 종료"; | ||
public static final String RE_GAME = "게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."; | ||
public static final String STRIKES = "스트라이크"; | ||
public static final String BALLS = "볼 "; | ||
public static final String NOTHING_ = "낫싱"; | ||
} | ||
|
||
public final class ExceptionMessage { | ||
public static final String USER_INPUT = "1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 입력해주세요."; | ||
public static final String STATE_OF_GAME = "1 또는 2를 입력해주세요."; | ||
} | ||
|
||
public static final String REGEX_PATTERN = "^[1-9](?!.*([1-9]).*\1)[1-9](?!.*\2)[1-9]$"; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
내부 클래스는 가능하면 static으로 선언하도록합시다. 왜 그런지 한 번 알아보세요 :)
디렉토리를 하나 생성해서 그 안에 클래스들을 포함시키는 것도 대안일 것 같습니다.
private Vector<Integer> userNumber; | ||
private Vector<Integer> computerNumber; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C++과 다르게 Java에서 Vector는 사실상 deprecated입니다. 대안을 찾아봅시다.
|
||
private void createRandomNumber() { | ||
computerNumber = new Vector<>(); | ||
while(computerNumber.size() < Constants.Number.LENGTH) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
조건들을 메소드로 분리시켜봅시다.
computerNumber.size() < Constants.Number.LENGTH
while문이 실행될 조건이 한눈에 보이게 리팩토링 해주세요.
private void validTestInputUserNumber(String input) { | ||
boolean isValid = Pattern.matches(Constants.REGEX_PATTERN, input); | ||
if(!isValid) { | ||
throw new IllegalArgumentException(Constants.ExceptionMessage.USER_INPUT); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isValid
는 변수로 선언하기 보다 메소드로 분리시키는 것이 더 나아보입니다. 그러면 메소드명은 더 구체적으로 작성해야겠죠?
private void validTestStateOfGame(String state) { | ||
if(!state.equals(Constants.Symbol.END_GAME) && !state.equals(Constants.Symbol.RESTART_GAME)) { | ||
throw new IllegalArgumentException(Constants.ExceptionMessage.STATE_OF_GAME); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
조건문도 가독성을 향상시키는 방향으로 리팩토링 할 수 있겠네요. 드모르간 법칙을 이용해봅시다!
static import
를 적용해봅시다. 해당하는 코드에 커서를 올린 후 Option + L
을 눌러보세요 :)
public final class Number { | ||
public static final int LENGTH = 3; | ||
public static final int MIN_VALUE = 1; | ||
public static final int MAX_VALUE = 9; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 값들을 잘 활용할 수 있도록 리팩토링 해봅시다.
⚾️ 숫자 야구 게임 과제 제출
🗒 구현한 기능 목록
1️⃣ 랜덤 숫자 생성
2️⃣ 숫자 입력
3️⃣ 정확도 체크
4️⃣ 정확도 출력
5️⃣ 게임 진행
6️⃣ 게임 종료 여부
7️⃣ 게임 시작
🗂 폴더링