[BE]우테코 프리코스 2주차 회고

Amyhds·2022년 11월 9일
0

📎PR 링크

2주차_숫자야구게임

📝문제 풀이

문제 링크

  • Application(게임 시작 및 재개)
    • main
      게임 시작
    • playGame
      컴퓨터 수 생성 함수 호출
      사용자 수 생성 함수 호출
      비교 함수 호출
      결과 출력 함수 호출
      게임 재개 여부 함수 호출
      do-while문 사용으로 오답일 경우에는 다시 입력 시도하도록 함(while의 조건=오답(0) 리턴 시 반복)
    • continueGame
      오답 or 새 게임 or 게임 종료의 결과 리턴
      오답이면 다시 playGamedo-while문으로
      새 게임(1 선택)이면 playGame 실행
      종료(2 선택)이면 게임 종료
  • NumberChoice(컴퓨터와 사용자의 숫자 선택)
    • computerPick
      camp.nextstep.edu.missionutils.RandomspickNumberInRange()를 활용
    • userPick
      camp.nextstep.edu.missionutils.ConsolereadLine()을 활용
      유효성 검사 함수 호출
      String 배열List<Integer>로 변환
  • Validation(사용자 숫자 유효성 검사)
    • isLength
      길이가 3인지
    • isRange
      수의 범위가 1~9인지
    • isDiff
      세 개의 수가 중복되지 않는지
    • isValid
      위의 세 조건을 다 만족하면 true를 리턴
  • Comparison(컴퓨터 수 와 사용자 수의 비교)
    • locate
      같은 위치에 같은 수가 있는지 확인
    • contain
      같은 수를 포함하고 있는지 확인
    • compare
      locate에서 받은 값 = strike
      contain에서 받은 값 - strike = ball
  • GameOutput(게임 결과 출력)
    • strikeball을 받아서 결과 출력

📓배운 것

1. 클래스 분리

대학교 수업에서 c++을 들을 때 cpp 파일이랑 헤더 파일을 분리했던 기억이 났다. 아직 고수님들처럼 막 util, controller 이렇게 나누는 규칙은 모르지만...그래도 나름 깔끔하게 하려고 노력했다.

2. do-while문

사용자가 컴퓨터와 다른 수를 입력했을 때 다시 입력받도록 해야했기 때문에 방법을 찾다가 do-while문을 사용하게 되었다. 예전에 봤을 때 저걸 쓸일이 있으려나 했는데 여기 있었다ㅋㅋㅋ

3. constant(상수) 클래스 생성

다른 분 코드를 보니 고정으로 출력되는 문구들을 따로 모아서 클래스를 생성하셨길래 새롭게 배웠다. 다만 각 클래스에서 상수처럼 등록해놔도 충분히 가독성 있을 것이라 생각돼서 상황을 봐가면서 해야할 듯!

📌고칠 것

1. public, private 그리고 static

실무에 뛰어든 것이 아니라서 아직 저 둘의 차이점을 고려해서 코드를 짜기엔 부족하지만 그래도 나중을 위해서라도 좀 배워야 할 것 같다. 다만 어떤 분들이 테스트를 할 때 private로 선언한 메소드들은 방법이 되게 복잡해진다고 말한 것을 봐서 음 일단은 public으로 하는 걸로...
static 변수나 메소드들도 언제 어디서 쓰는 것이 좋은지 아직은 잘 몰라서 공부해야할 것 같다.

2. 예외 처리

사용자 수를 입력받을 때 너무나 당연히 숫자만 입력한다는 생각을 해서 다른 엉뚱한 값을 입력했을 때 예외 처리를 하지 못했다. 다른 분 코드를 보고 나서야 아차했다. 담엔 더 철저하게 예외 처리를 하는 걸로!!!

3. 테스트 코드

으 제일 부끄러운 실수...? 어쩌면 게으름이랄까...ㅠㅠ
기존 테스트 코드로도 많은 기능을 한꺼번에 테스트할 수 있어서 새롭게 추가한 것이 얼마 없었다(고 내맘대로 생각했다). 다음 문제에서는 최대한 많이 기능별로 테스트해야겠다...
그리고 사실 아직도 개념이 잘 안 잡혀서 공부가 필요하다. 어떤 분이 슬랙에 올려주셨던 유튜브 영상을 보면서 공부해야겠다!!!
+역시 2주차 피드백에도 테스트에 대한 내용이 있었다. 괜히 찔리는 이 기분;;;

4. 하드 코딩하지 않기

숫자까지는 상수로 만들었는데 문자열을 생각 못했다.

5. 1함수 1기능

최대한 지키려고 했는데도 안 된 함수도 있었다.

❗느낀 것

확실히 1주차에 비해 뭔가 더 신경쓰고 공부한 기분이 들었다.
그래도 아직 갈길이 멀다. 커밋 메시지도 더 체계적으로 적어야 하고, 앞으로 더 생길 요구사항도 잘 파악해서 충족해야 하고, 테스트 코드도 제대로 알아놔야 하고, 다른 분들 코드도 많이 보면서 배우기!!!!
2주차 미션을 처음 봤을 땐 진짜 눈물 날뻔 했는데 어떻게 다 해냈네...?
어려웠지만 재미도 있었다. 특히 리팩토링 할 때! 왜냐면 기능은 잘 돌아가니까 일단 마음이 편하기 때문ㅋㅋㅋㅋ
3주차도 허리통증 목통증 어깨통증과 함께 하는 걸로...😩화이팅이다!!!!

+1주차 피드백을 보고 2주차에서 과연 잘 지켰는지 체크해봤다
Java API를 활용했는가...? 음 아닌 것 같다
테스트 코드를 제대로 못만들어서 요구사항도 정확히 준수하지 못했다고 해야겠지?
그 외에는 크게 잘못한 것 같지 않다.

profile
배우는 중입니다

2개의 댓글

comment-user-thumbnail
2022년 11월 10일

잘보고갑니다!

1개의 답글