본문 바로가기

부트캠프/우아한테크코스

[우테코 6기] 프리코스 1주차 회고 - 숫자야구

반응형

[문제] 프리코스 1주차 GitHub

 

GitHub - woowacourse-precourse/java-baseball-6

Contribute to woowacourse-precourse/java-baseball-6 development by creating an account on GitHub.

github.com

 

[풀이] 프리코스 1주차 GitHub


개발 요구사항 - 구현 기능 목록

 

 

1. 컴퓨터가 가진 수 3개 랜덤하게 정하기 (1~9) 

camp.nextstep.edu.missionutils.Randoms의 pickNumberInRange()를 활용 

 

2. 입력받은 수 확인 

camp.nextstep.edu.missionutils.Console의 readLine()을 활용
  • 스트라이크 : 같은 위치에 동일 수 존재하는지 확인
  • 볼 : 다른 위치에 동일 수 존재하는지 확인
  • 낫싱 : 어느 위치에도 동일 수가 존재하지 않는지 확인 (3 숫자 다 스트라이크, 볼이 아닌 경우)

 

3. 컴퓨터가 가진 수 3개를 다 맞출 시 : 게임 라운드 종료

 

4. 라운드 종료 후 - 게임 재실행 및 게임 완전히 종료 선택 가능

  • 1 입력: 새로 시작
  • 2 입력: 완전히 종료

 

5. 사용자 입력 오류 시 : IllegalArgumentException 오류 발생 시키기

  • 도전 중: 3개의 수 입력이 아닐 시 (2개 이하, 4개 이상일 경우)
  • 게임 성공 후: 1,2가 아닌 수 입력 시

 


소감 - 느낀 점 

 

 

내가 이번 활동으로 배운 점은 두 가지이다.

 

첫 번째, 프로그래밍 요구사항을 따라야하므로 개발 환경 등 전보다 고려해야 할 사항이 늘었다. 

기존에 프로그램 개발이나 알고리즘 문제 풀이 시, 기능 요구 사항만 고려했었다. 하지만 이번 프리코스 미션은 기능 요구 사항 뿐 아니라 간단하게나마 프로그래밍 요구 사항이 있어 처음으로 JDK 버전 등을 확인하게 되었다.

JDK를 확인하니 요구한 17버전이 아니라 20버전이어서 버전 변경 방법을 몰랐던 본인은 이번 프리코스를 통해 터미널에서 사용 JDK 변경 방법을 알게 되었다. 또한 Java 코드 컨벤션 가이드가 있다는 점도 이번 활동을 통해서 알게 되었다.

 

변경 방법

1. 현재 로컬에 설치되어 있는 JAVA 버전 확인
/usr/libexec/java_home -V

2. 버전 v. n 으로 변경하기
export JAVA_HOME=$(/usr/libexec/java_home -v n)

 

두 번째, 문제를 제대로 읽어야 한다.

요구사항에 맞춰 프로그래밍했다고 생각하였지만, Test를 통과하지 못하였다. 그래서 다시 문제를 천천히 읽어보니 실수가 있었다.

'n 볼, n 스트라이크' 라고 출력해야하는데 'n 스트라이크, n 볼' 이라고 출력하는 실수가 있었다. 이런 단순한 실수로 문제가 해결이 안될 수 있으니 앞으로 더욱 조심해야겠다고 생각했다.

 


피드백

 

전체 피드백에서 스스로 고쳐야겠다고 생각한 부분들과 그래서 필자가 결정한 개선방안을 소개한다.

 

1. 요구사항을 정확히 준수한다.

 

2. 커밋 메시지를 의미있게 작성한다.

 

타입이름 내용
feat 새로운 기능에 대한 커밋
fix 버그 수정에 대한 커밋
build 빌드 관련 파일 수정 / 모듈 설치 또는 삭제에 대한 커밋
chore 그 외 자잘한 수정에 대한 커밋
ci ci 관련 설정 수정에 대한 커밋
docs 문서 수정에 대한 커밋
style 코드 스타일 혹은 포맷 등에 관한 커밋
refactor 코드 리팩토링에 대한 커밋
test 테스트 코드 수정에 대한 커밋
perf 성능 개선에 대한 커밋

 

 

3. 이름을 통해 의도를 드러내며, 축약하지 않는다.

  • 연속된 숫자를 덧붙이거나(a1, a2, ..., aN), 불용어(Info, Data, a, an, the)를 추가 X
  • 이름을 한 두 단어로 유지하려고 노력하고 문맥을 중복하는 이름을 자제
    ex) Math 클래스에 mathSum X → Math 클래스에 sum

 

4. 의미없는 주석은 달지 않는다.

: 최대한 이름으로 의미를 표현하고 표현이 안될경우에만 주석을 단다.

 

5. JAVA 에서 제공하는 API를 적극 활용한다.

 

6. 배열 대신 Java Collection을 사용한다.

 

7. 기능 요구사항 작성

 

8. 객체 지향적으로 프로그래밍 하자

  • 기능을 가지고 있는 클래스를 인스턴스화(=객체)한다.
  • 필요한 기능을 (역할에 맞는) 인스턴스가 수행하게 한다. (의인화)
  • 각 결과를 종합한다.
반응형