우아한 테크코스 6기 프리코스 1주차 회고

지송·2023년 12월 6일
0

안녕하세요!
앞으로 저는 4주동안 우아한 테크코스의 지원 단계인 프리코스에 참여하게 됩니다
이 글은 언제 출간할지는 모르겠지만 아마 붙거나 떨어지거나 결과를 다 본 후 출간하지 않을까... ㅎㅎ
붙든 떨어지든 제가 열심히 했다는 것에 의의를 두고 싶지만 그래도 붙는 쪽에 간절한 희망을 두고 있기는 합니다!
혹시나 이 글을 보실 분이라면 저와 같이 테크코스에 지원했거나 혹은 6기 이후에 지원을 희망하며 제 블로그를 보실 분이겠죠?
응원합니다! 파이팅~

https://github.com/woowacourse-precourse/java-baseball-6

과제는 위 링크에서 볼 수 있듯 숫자 야구 게임입니다
구현도 중요하지만 최대한 코드를 깔끔하게 짜는 게 중요할 듯해요

< 2023.10.19 목요일 >

이제 과제가 공개되었습니다!
저의 오늘 할 일을 정리해 볼게요

  • 과제 Fork하여 로컬에서 체크하기
  • 자바 컨벤션 인텔리제이에 적용하기
  • 테스트 실행 가이드 (자바 버전 등) 확인
  • [->] 플로우 차트 그리기
  • [->] 기능 구현 문서 작성하기

오늘은 문서화 및 설계에 대한 심도 깊은 고민을 진행해 볼 거예요
설계가 잘 되어 있어야 코드를 잘 짜기 때문!

1. 과제 Fork하여 로컬에서 체크하기

완료! 인텔리제이에서 열기까지 진행했습니다~
과제 제출 방법에 상세하게 작성되어 있어서 다들 차근차근 하실 수 있을 거예요

2. 자바 컨벤션 인텔리제이에 적용하기

인텔리제이 자바 프로젝트 코딩 컨벤션 적용하기

해당 글을 참고하였고요 인텔리제이 자체에 적용하는 방식을 택했습니다!
우아한 테크코스에서 사용하는 코딩 컨벤션이 네이버 혹은 구글 등 대부분 사용하는 코딩 컨벤션이랑도 다를 게 없어서 앞으로 꾸준히 사용해 보려고 합니다
xml 파일은 따로 깃허브에 제공되어 있었어요!

윈도우 기준으로 Ctrl + Alt+ L을 누르면 자동으로 코드 스타일이 정리
=> 저는 자동으로 되게 설정까지 된 것 같은데 작성하면서 체크할게요!

3. 테스트 실행 가이드 (자바 버전 등) 확인

./gradlew.bat clean test

명령어의 경우 수행하는데 여러 고난이 있었는데
(1) JAVA_HOME 환경변수 경로 뒤에 bin을 떼야 동작한다
(2) 과제 완료 전이니 아직 test가 통과하지 않는 듯하다!

제출 전에 다시 명령어를 수행해 보는 걸로 하겠습니다 완료~

오늘은 다른 공부를 해야 할 것 같아서 여기까지만 하고 내일 아침에 이어서 해야겠습니다!
사실 미션이 너무 어려울 것 같기도 하고 지난 미션들을 보니까 다들 코드를 너무 아름답게 짜셔서 제가 할 수 있을까 많이 걱정도 했는데요!
노력하면 할 수 있겠다는 자신감이 생겼어요 ㅎㅎ

< 2023.10.21 토요일 >

저의 목표는 주말동안 온전한 몰입을 즐기는 거예요
오늘 할 일을 정해 볼까요?

  • 플로우 차트 그리기
  • 기능 구현 문서 작성하기
  • 조건 파트 작성하기
  • 구현 파트 작성하기

1. 플로우 차트 그리기

중요한 단계 중에 하나라고 생각해요
쉽게 놓칠 수 있는 부분을 잡고 갈 수 있는 시간이고!
저의 머릿속에 있던 것들의 틀을 잡는 시간입니다
다양한 툴들이 있지만 저는 아이패드로 직접 작성해 보겠습니다 ㅎㅎ

2. 기능 구현 문서 작성하기

구현할 class를 다 정리하고 보니 좀 더 작은 태스크로 나누어 수행하고 싶어서
해당 파트는 조건, 플로우 차트, 구현 파트를 나누어 작성하는 걸로 변경하겠습니다!
모두 깃헙 docs 에 들어갈 부분입니다

3. 조건 파트 작성하기

플로우 차트에서 꼼꼼히 읽어 보았지만 마지막으로 글로 정리하며 빠진 부분이 없는지 세세하게 점검하는 파트입니다

4. 구현 파트 작성하기

플로우 차트를 참고하며 찬찬히 작성해 보았습니다
컨트롤러에서는 전반적인 게임 관리를 진행하며
각종 문구는 뷰에서 관리를 합니다
베이스볼 모델을 통해 컴퓨터의 숫자를 지정하고 비교하는 것을 수행하며
뷰에서 exception을 날리면 inputException에서 해당 예외를 처리해 줄 예정입니다!

해당 파트까지 다 작성하고 나니 이제 개발 단계가 보입니다!

  • baseball 개발하기
  • OutputView 개발하기
  • [->] InputView 개발하기
  • [->] InputException 개발하기
  • GameController 개발하기
  • application 연결하고 확인하기
  • 테스트 진행하기
  • 규칙 준수 확인하기
  • PR 넣고 1차 제출
  • 지원서에 2차 제출

이렇게 하면 마무리 될 듯한데요!
아마 주말 내로 다 끝낼 수 있을 것 같아요
걱정 많이 했는데... 다행이에요...

개발하기

작성하다 보니 baseball class는 컴퓨터가 제작해내는 기능만 담당하는 것이 좋을 것 같아서 결과를 보관하는 모델을 따로 만들었습니다

설계는... 참 어렵다 ㅠㅠ 이번 기회에 자바 공부도 새로해야겠다는 생각이 문득 들었습니다...


커밋을 기능 단위로 쌓아서 16개 정도 쌓았어요!
생각보다 많이 안 나온 듯한데 리팩토링까지 거치면 많이 나오려나요?

지금 InputView를 만들면서 InputException까지 같이 작성 중인데 거의 끝이 보입니다
내일 얼른 작동하는 걸 보고 싶어요...

생각보다 시간이 여유로운 듯하지만 4주차로 진행하면서 아주 어려워질 것 같아서
이번 주차 미션이 끝나면 자바 기초부터 다시 공부하고~
IllegalArgumentException을 좀 더 우아하게 처리하는 법도 보고
여러 잘 설계된 코드도 보고 싶어요!

공부를 하면 할수록 더 할 게 많아지는 듯한 느껴지지만 이런 배움의 길이 즐겁게 느껴지네요
코딩을 처음 했을 때 그 두근거림이 느껴지는 기분...
암튼 자고 내일 이어서 마저 하는 걸로!

< 2023.10.22 일요일 >

오늘만 작업하면 다 할 것 같습니다!
하지만 아름다운 코드에 대한 열망은 끝이 없었다...

  • InputView 개발하기
  • InputException 개발하기
  • GameController 개발하기
  • application 연결하고 확인하기
  • 테스트 진행하기
  • 규칙 준수 확인하기

이제 다 이을 게임 컨트롤러 만들기! 좀 두근거립니다

class 함수를 잘못 만들었다는 걸 알고 급하게 hotfix 커밋을 올렸습니다
바보 같은 실수를 했어요...

인텔리제이 터미널 한글이 깨져서 슬펐는데 이거 보고 해결했습니다!
[Intellij]콘솔창에 한글이 깨져서 나올때 최후의 방법

아아 멍청한 실수를 했다 list get 함수와 indexOf 함수를 혼동한...
어쩐지 이상한 결과가 나오더라
흑흑
또 hotfix 올립니다

드디어 끝이 보입니다...

끝! 제출 기한은 아직 아니라고 해서 24일에 제출하도록 하겠어요~

  • 기능 구현 문서 수정
  • PR 넣고 1차 제출
  • 지원서에 2차 제출

과제 제출 끝!

소감문

코드 컨벤션을 적용해 보고 코드를 작성하면서 틈틈이 적용하니 확실히 가독성이 올라가는 걸 인지할 수 있었습니다.
협업에 있어서 서로의 코드를 봐야 할 일이 많을 텐데 각종 컨벤션이 필수적임을 깨달을 수 있었습니다.
플로우 차트를 그리고 해당 차트를 바탕으로 기능 구현 문서를 작성하였는데 
구현 파트에서 미리 클래스와 클래스의 각종 할 일을 지정해 두니 
개발은 고민 없이 진행할 수 있었습니다.
개발을 하면서 바로 리팩토링을 적용해가며 구조를 변경해도 좋겠지만 
(실제로 result 클래스는 코드를 작성하다 너무 역할이 다른 듯하여 분리한 class 였습니다)
미리 설계를 하며 고민을 거치고 역할을 구분해 두니 훨씬 코드 작성이 간단하였습니다
자바의 기본 개념을 배운 지 오래되어 class를 작성하다가 조금 헤매었는데 
이번 기회로 자바 기본 개념을 다시 정리하자는 생각이 들었습니다
코드를 작성하면서 제가 무엇이 부족하고 
더 발전할 길을 알게 돼서 알차고 몰입할 수 있는 시간이었습니다
앞으로의 한 달 동안 많은 발전을 할 수 있도록 더욱 노력하고 싶습니다

https://github.com/shin-jisong/java-baseball-6/tree/shin-jisong
코드는 여기에서 확인 가능합니당 ㅎㅎ

profile
💻 늘 공부하고 발전하는 개발자

0개의 댓글