우아한 테크 1 주차 미션 정리

백승찬·2020년 12월 12일
1

java

목록 보기
1/3

숫자 야구 게임

자바 콘솔로 구현하는 숫자 야구 입니다.

처음에는 우아한 테크 docs에 있는 클린 코드 원칙을 최대한 지키며 할려고 했습니다. 하지만 처음부터 완벽히 구현 기능들을 REAME.md로 써내려가는 과정이 굉장히 힘들었습니다.

제가 시도 했던 방식을 처음 방식으로 진행할려고 했습니다. 처음부터 완벽히 구상하려니 막막 했습니다. 3일 동안은 아무것도 구상하지 못 하고 계속 삽질만 했던 것 같습니다.
(자바 문법도 완전하지 못 한채로 완벽한 프로그램을 구상하려는 멍청한 생각을 계속 ....)

그래서 3일동안 밤새 고민한 끝에 나온 생각이 스케이트 보드부터 만들고 리팩토링을 하자였습니다.

애자일에 대하여 공부도 하고 적용(?) 같은 것도 해보았지만 그건 django처럼 완벽히 만들어진 framework를 주로 하더보니 애자일 방식을 완전히 숙지하지 못 했습니다.

그리고 4일차에 일단 간단한 기능 구현 목록을 만들고 메소드를 작은 단위로 쪼개어서 서로 return 값으로 메소드를 상호작용을 하려하니 못하겠더군요. 그래서 그냥 한 스크립트에 다 구현 했습니다.
그리고 스크립트를 다시 보면서 어떻게 한가지 기능 메소드로 쪼갤가를 고민하여서 최대한 메소드를 분리하고 class를 개념에 맞게 나누었습니다.

클래스로 나눈 것은 7가지로 나누었습니다.

Application Class

클린 코드 원칙인 else 예약어를 지양하라는 말씀에 switch 구문으로 작성했는 데 피드백 받았을 때 어리석은 판단이었구나를 느꼈습니다. 그리고 다시 숫자 야구를 한다면 이 로직을 Game Class에 구현 할 것 같습니다. 그리고 또한 게임 시작과 게임 종료 그리고 default 값을 각각의 메소드로 구현 할 걸이라고 글 쓰면서 후회 중 입니다....

Computer Class

아쉬움이 많은 클래스인 것 같습니다. List 콜렉션을 완벽히 이해를 못하여서 (파이썬에 너무 익숙해진 것 같네요..) 쓰는 데 많이 애를 먹고 시간이 촉박하여 그냥 배열 형태로 작성하였는 데 리팩토링 할 시에는 콜렉션을 써서 List 형태로 바꾸고 그리고

모든 원시값이나 문자열을 포장한 줄 알았는 데 실수를 했습니다... 이것 또한 바꾸고 싶네요.

그리고 중복숫자검사에 Overlap이라는 단어를 썼는 데 Duplicate가 더 적합한 것 같습니다.

inputRandomNumberArray 또한 두가지 기능을 수행하는 메소드 만든 것 같습니다. 두가지 메소드로 나누어 활용하는 것이 좋을 것 같습니다.

Game Class

Application Class에 있는 기능들을 여기다가 추가 해야할것 같습니다.

Hint Class

음.... 이 메소드는 몇가지 일을 하는 지 지금 봐도 알수없네요.....

strike와 ball을 판단하는 메소드를 추가하고 각각의 상황에 맞는 출력문을 메소드를 추가하여 구현하는 부분을 해야했는 데 아쉬움이 많이 남습니다.

그리고 indent가 3을 초과해 버렸습니다. hashmap을 이용하여 key와 value를 비교하면 좀 더 나은 로직이 되었을 텐데 2중 for문을 돌려버렸네요.

Player Class

List 콜렉션을 활용하고 파라미터를 Scanner 데이터 타입으로 매개변수를 주고 받았으면 중복된 모듈을 덜 import 했을 텐데 매개변수 활용을 못 한 것 같습니다.

그리고 예외처리는

  • 텍스트가 들어갔을 시

  • 0이 들어갔을 시

  • 3자리 수 이상이 들어 갔을 시

  • 중복된 숫자가 들어갔을 시

로 구상 하였지만 조금 디테일한 예외처리까지 생각 못 한 것 같아 아쉽습니다.

처음에 자바를 전체적으로 완벽히 하고 로직을 구현 해야지라는 생각에 계속 발목을 잡았던 것 같습니다. 그리고 자바의 정석이라는 책을 다 보고 완벽하다고 생각했는 데 그것 또한 아니었습니다.
학교 생활에서는

  • 기억

  • 이해

  • 응용

  • 분석

  • 평가

  • 창작

6단계가 차례대로 학습 했던 것 같습니다. 그래서 1주차 미션에서 자바의 모든 것을 기억하고 이해할려니 감당이 안되더군요. 개발자가 될려면 학습 메커니즘을 바꾸어서 역순으로 진행하여서 내가 부족하고 필요한 기술들을 학습하는 데 포커스를 두어야 될 것 같습니다.

그리고 클린 코드 원칙을 조금이나마 지키면서 많은 깨달음을 얻은 것 같습니다.

2개의 댓글

comment-user-thumbnail
2020년 12월 13일

성장형 캐릭터... 성캐..

답글 달기
comment-user-thumbnail
2020년 12월 13일

힘 찍은 법사.. 힘법사..
힘도 쌔고 머리도 좋아..

답글 달기