Peony의 기록 창고 🌼
article thumbnail
반응형

우테코 미션 안내 메일

 드디어 2주차 시작..! 2주차 부터는 이전의 프리코스와 동일하게 '숫자야구'였다. 기능적으로 보면 어렵지 않은 프로젝트이지만, 우테코에서 원하는 건 클린코드에 대해 고민하고 연습하며 성장하는 것이다.

 

 코수타 시간에서 코치님 중 한분이 이런 말씀을 하셨다. "2주차 미션부터는 함수나 메서드들을 역할에 따라서 분리하는 연습과, 테스트 도구를 연습하는 시간이 되었으면 좋겠어요. 우테코에서는 테스트를 중요시 하고 있어요. 단순히 정상 동작하는 지 테스트 하는 것이 아니라 테스트 주도 개발(TDD) 이 주는 이점에 대해 공부하고 생각해 보시면 좋을 듯합니다." 이말을 일주일 내내 계속 되새기며 과제를 해결해나갔던 것 같다.

 

과제를 진행하며 제일 고민을 많이하고, 어려웠던 부분은 프로젝트 구조와 테스트 코드였다.

 

프로젝트 구조가 텅 비어있어서 어떻게 구조를 짜야할지 한번에 모든 것을 생각하려니 정말,, 머리가 굳어버린 느낌이었다.🤯 한 이틀정도를 고민하다가 완벽한 정답은 없으니까 일단 해보자!라는 생각으로 시작했던 것 같다. 지금 생각해보면 어려운게 당연하다. 경험이 많은 사람들도 프로젝트에 맞는 적절한 설계를 짜는 것을 힘들어한다고 알고있는데 나같은 생초보가 한번에 좋은 설계를 한다는 것은 당연히 힘든 것이다. 코드는 한번에 완성 시키는게 아니라, 차근차근 발전 시켜서 완성하는 것임을 잊지말자. 이런 경험이 처음이어서 처음 보는 규칙들을 기억하기 위해 더 고민을 많이했고, 힘들었던 것 같다. 다음 과제때는 이번 과제보다 더 발전할 수 있을꺼라 확신한다.🔥

 

주의할 점

  • indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현. 2까지만 허용
  • 3항 연산자 금지
  • 함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들기
  • JUnit 5와 AssertJ를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인하기

 

1. Readme.md 작성

과제 요구사항에 맞춰서 우선 프로젝트 시작 전에 Readmd에 기능 구현 목록을 작성했다.

구현 기능 목록에는 정답이 있는 것이라 생각되지 않아서 내가 개발하면서 기능단위 커밋을 하기 용이하도록 작성했다.

 ## 📚기능 목록
 ​
 1. 1 ~ 9 사이의 서로 다른 숫자 3개를 뽑아 3자리 수를 정한다.
 2. "숫자를 입력하세요 : "라는 문구를 출력한다.
 3. 숫자 입력 받기
    1. 3자리 수가 아닌 경우 -> 예외 출력
    2. 숫자가 아닌 경우 -> 예외 출력
    3. 중복된 숫자가 들어간 경우 -> 예외 출력
 4. 힌트 구하기
    1. 숫자가 같은 위치에 있다면? 스트라이크
    2. 같은 숫자, 다른 위치? 볼
    3. 1, 2번을 만족하는 숫자가 없으면? 낫싱
 5. 힌트 출력하기
 6. 정답 유무 판단하기
    1. 3 스트라이크인 경우 : 게임 종료
    2. 아니면? 다음 라운드로(2번으로 돌아가기)
 7. 게임이 종료가 되면, 재시작할지, 종료할지 물어본다.
    1. 입력받은 수가 1이면? 재시작
    2. 입력받은 수가 2이면? 게임 종료
    3. 그 외의 숫자 입력시 오류 발생

 그동안 readme의 중요성에 대해 알고있지만, 쓰지 않았었는데, 확실히 프로그램 기능을 구현하기 전에 readme를 먼저 구상하니, 개발을 할때 좀 더 매끄럽게 진행할 수 있던 것 같다.

 

2. 코드 작성

https://github.com/myeongju00/java-baseball

 

GitHub - myeongju00/java-baseball: 숫자 야구 게임 미션을 진행하는 저장소

숫자 야구 게임 미션을 진행하는 저장소. Contribute to myeongju00/java-baseball development by creating an account on GitHub.

github.com

 

아쉬웠던 점

  1. 프로젝트 구상을 너무 완벽하게 하려다보니 시작조차 하지 못하고 헤멘 것 같다. 다음 과제부터는 이렇게 시작도 못하고 고민하는 시간을 좀 줄여야겠다.
  2. TDD를 제대로 지키지 못한 것 같다. TDD가 중요하다는 말을 계속 들어왔지만, 프로젝트를 진행할 때 한번도 적용을 해보지 못했었다. 이번 과제도 테스트 주도 개발을 해봐야지~ 라는 마음으로 시작했지만, 테스트 코드를 어떻게 짜야할지 조차 감이 안잡혀 결국, 기능을 먼저 구현하고 테스트 코드로 확인하는 방식으로 한 것 같다. 이번 과제 덕분에 TDD 공부의 필요성을 느껴서 "테스트 주도 개발"이라는 책을 구매해서 현재 읽는중이다. 이 책을 읽고나면, 테스트 주도 개발이 어떤 것인지, 실제로 적용할 때는 어떻게 적용하는지 감을 잡을 수 있을 것이라는 확신이 든다.

 

느낀점

 아직 "클린코드로 완벽히 작성했다!"는 아니지만, 클린 코드와, 기능별 커밋, 하나의 메소드는 최소단위의 기능만 하도록 분리하는 부분에 대해서는 어느정도 감을 잡은 것 같아서 좋다.

 숫자야구는 굉장히 간단한 게임이지만, 자바 코드 컨벤션, indent 조건, 그리고 객체지향적 설계를 지키면서 진행하려다보니 많이 배우는 것 같다. 최근에 계속 알고리즘 문제만 풀어서 그런지, 코딩이 재밌다라는 느낌은 안들었었는데, 이번주 과제를 하면서 힘들지만 완성시키는 과정에서 재미있었다. 처음에는 걱정만 앞섰지만, 진행 할수록 재밌다는 생각이 들고, 힘들지만 얻는 것도 괸장히 많다라는 생각이 들었다. 저번주에는 자꾸 사람들과 내 자신을 비교하며 자신감도 없고 되게 우울했는데, 코수타 시간이 나에게 도움이 많이 되었던 것 같다. 남은 기간동안 나만의 속도로 성장하고자 한다. 남은 3, 4주차에서도 많은 것을 얻고 성장해가는 내 자신을 마주하고 싶다.

 

반응형
profile

Peony의 기록 창고 🌼

@myeongju