작성시각 10월 25일 오전 03:04 (이 포스팅은 1주 차 과제가 끝난 뒤에 자동 업로드됩니다.)
공부가 더 절실히 필요하다는 것을 느꼈습니다...
일단 가장 중요한 거 기능목록표인가 그것을 작성하는 것의 중요성을 뼈저리게 느꼈습니다. Model 구현에 있어서 필요한 기능이 정리가 안 되니까. "어? 이거 필요하네 만들어야지" while(true)돼서 Model 만 한 6개 만들었다 지웠다 삽질을 많이 했는데 시간이 없어서 그냥 빨리빨리 배우면서 하려다 보니까 급했는데 다음에는 첫날에 코딩금지를 내리고 기능목록과 플로우차트 작성에 1일을 쏟아도 되겠다고 생각했습니다. 진짜 개발시간 3분의 1로 줄여주는 방법인 거 같네요.. 이거 쓰고 Constant 페이지 만들어서 상수들좀 정리 좀 하고 1차 제출하렵니다.
코드ㄱㄱ
Controller
package baseball.Controller;
import baseball.Model.BaseBallGame;
import baseball.Model.GameState;
import baseball.Model.Helper;
import baseball.Model.Valid;
import baseball.View.GameView;
import java.util.List;
public class GameController {
private GameView gameView = new GameView();
private GameState gameState;
public void startGame() {
Helper helper = new Helper();
gameState = GameState.GAME_START;
gameView.printStartMessage();
while (gameState != GameState.GAME_END) {
BaseBallGame baseBallGame = new BaseBallGame(helper);
playGame(helper, baseBallGame);
String inputRestart = gameView.printGameOverMessage();
gameState = GameState.gameRestart(Valid.restartValid(inputRestart));
}
}
public void playGame(Helper helper, BaseBallGame baseBallGame) {
while (gameState != GameState.GAME_OVER) {
String input = Valid.startValid(gameView.printInputMessage());
List<Integer> userInput = helper.parseUserInput(input);
List<Integer> ballStrikeCount = baseBallGame.checkBallCount(userInput);
gameView.printBallStrikeMessage(ballStrikeCount);
gameState = GameState.gameOver(baseBallGame.checkThreeStrike(ballStrikeCount));
}
}
}
음 문제점을 보자면 사실 깔끔하게 만들고싶어서 만든 건데 가독성이 있는지 모르겠습니다. 처음 while문은 게임 전체를 관리하고 playGame의 while문은 사용자가 반복입력하면서 하는 건데 지금 보니까 ENUM으로 설정한 OVER와 END가 가독성이 안 좋아 보이네요... 다시 하죠 뭐 다음에 열심히
아쉬운 점
코드컨벤션을 잘 지키지 못했다.
이건 디스코드에서 본 것 같은데 한 줄에. 1개만 찍는다. 나는걸 봐서 지금 딱 봐도 점 2 개인게 많죠 ㅠ 아쉽네요
Model
package baseball.Model;
import java.util.ArrayList;
import java.util.List;
public class BaseBallGame {
private List<Integer> computerNumber;
private Helper helper;
private static final int BASEBALL_NUM_SIZE = 3;
private static final int STRIKE = 1;
public BaseBallGame(Helper helper) {
this.helper = helper;
computerNumber = helper.generatorComputerNumber(BASEBALL_NUM_SIZE);
}
public List<Integer> checkBallCount(List<Integer> userInput) {
List<Integer> listBallStrike = new ArrayList<>();
int totalCount = 0;
int strikeCount = 0;
for (int i = 0; i < BASEBALL_NUM_SIZE; i++) {
if (userInput.contains(computerNumber.get(i))) {
totalCount++;
}
if (userInput.get(i) == computerNumber.get(i)) {
strikeCount++;
}
}
listBallStrike.add(totalCount - strikeCount);
listBallStrike.add(strikeCount);
return listBallStrike;
}
public boolean checkThreeStrike(List<Integer> listBallStrike) {
if (listBallStrike.get(STRIKE) == BASEBALL_NUM_SIZE) {
return true;
}
return false;
}
}
가장 아쉬운 부분,, checkBallCount가 너무 더러워 보여서 어떻게 할지 고민이 많았는데 BallCount, Computer, User 이렇게 Model을 만들고 객체에 넣어놓으려고 했는데 앞서 말했던 설계서처럼 구체화를 안 시키고 머리로 하려니까 복잡하고 어렵네요
아쉬운 점
int totalCount = 0; 이것도 마음에 안 들음
listBallStrike.add 에서 직접 연산해서 대입하는 것도 별로임
사실 checkBallCount 메서드가 너무 별로인데 다음에 잘하지 뭐
나머지 Model은 GameState(Enum), Helper, Valid 가 있는데 Git가시면 보실 수 있습니다.
마무리하자면 한 2일 정도 집중 못해서 아쉽고, 특히 초기에 docs를 쓰는데 공을 들이고 개발에 들어가자고 생각했습니다. 코드컨벤션을 신경 쓰면서 추가 구현이 필요하다면 갈아엎지 말고 천천히 기능분리를 해가는 게 좋다고 판단되네요. 다 당연한말이지만 당연한걸 당연하게 하는 사람은 잘하는 사람입니다. 파이팅~
'Activities > 우아한 테크 프리코스' 카테고리의 다른 글
[회고록] 우아한테크 프리코스 회고록2-2 (0) | 2023.11.02 |
---|---|
[회고록] 우아한테크 프리코스 회고록2-1 (2) | 2023.11.02 |
[회고록] 우아한테크 프리코스 회고록1-4 (1) | 2023.10.27 |
[회고록] 우아한테크 프리코스 회고록1-2 (1) | 2023.10.26 |
[회고록] 우아한테크 프리코스 회고록1-1 (0) | 2023.10.26 |