Tiny Star
본문 바로가기
Dev Log

[우테코 AN 8기] 프리코스 2주차 회고 | '자동차 경주' 과제 / 공통피드백

by 별터 2025. 10. 29.

우테코 프리코스 2주차가 벌써 끝났다 !!

이번 2주차를 진행하는 도중에, 지원했던 게임 회사의 과제 합격 소식을 받았다.

그래서 게임 회사의 온라인테스트와 동시에 진행했기 때문에 살짝 정신 없었던 주이기도 하다.

 

2주차를 막 시작하면서, 1주차의 코드 리뷰도 진행했는데 이렇게 진지하게 서로의 코드를 봐주고 작성하는 것이 처음이라 신기했다.

이전에 프로젝트하면서는, 기능만 넘어가면 다른 기능을 구현하기 급급해서 코드 퀄리티를 깊게 생각해본 적이 없는데 우테코를 하면서는 가벼운 기능을 구현하는데도 코드 퀄리티를 생각하느라 긴 시간을 투자하게 된다.

아이러니하게, 긴 시간을 투자해 고찰해볼수록 나는 더 고민해야하는구나를 느끼게 된다!!

 

2주차 자동차 경주 과제

 

https://github.com/woowacourse-precourse/kotlin-racingcar-8/pull/42

 

[자동차 경주] 김선아 미션 제출합니다. by todays-sun-day · Pull Request #42 · woowacourse-precourse/kotlin-racin

[2주차] 자동차 경주 🚗 초간단 자동차 경주 게임을 구현한다. 구현한 기능 목록 📝 1. 애플리케이션을 실행하면 안내 문구를 출력하고, 자동차 이름과 시도할 횟수를 입력받는다. 경주할 자동

github.com

위의 링크는 이번 주차의 자동차 경주 링크이다.

 

https://github.com/woowacourse-precourse/kotlin-calculator-8/pull/19

 

[문자열 덧셈 계산기] 김선아 미션 제출합니다. by todays-sun-day · Pull Request #19 · woowacourse-precourse/ko

구현한 기능 목록 문자열과 구분자 입력 받기 입력 문자열이 비어있거나 null 일 경우 0을 반환한다. 숫자 하나만 입력될 경우 해당 숫자를 그대로 반환한다. 구분자 분석 및 문자열 분리 기본 구

github.com

문자열 덧셈 계산기는 지난 주차의 링크이다.

 

한 주 차이밖에 안 나는데, 큰 차이가 보인다.. 그럴 수밖에..

왜냐하면 1주차에는 인텔리제이와 코틀린 모두 처음이었는데, 2주차에는 그래도 한 번 해봤다고, 테스트 코드도 작성했다.

 

이번 주차에서는 테스트 코드 작성할 때 input과 output 을 인터페이스로 구현하는 것이 킥이었던 것 같다. 인터페이스로 구현하지 않으면 콘솔 처리가 복잡해지기 때문이다.

 

아직 다른 사람들의 코드 리뷰는 하기 전인데, 어떻게 작성했는지 궁금해지는 부분이다.

 

스터디

이번 주 스터디에서는 모두 일간 회고를 필수적으로 할 수 있게 진행하였다. 

그리고 팀원 간의 소통도 조금이지만 늘어났다.

애초에 스터디 필수 요소는 코드 리뷰만으로 만들었었다. 그래서 일간이나 주간 목표 같은 건 작성하지 않았었는데, 너무 스터디치고 하는 것이 없는 것 같아서 일간을 추가하였다!

위와 같이 매일매일 모두가 회고를 올렸다. 사정이 안 되는 날은 하지 않기도 했지만, 다들 각자의 회고를 올리니 자극이 되기도 하고 열심히 하게 되기도 하였다. 다른 스터디원들은 어떻게 공부하는지도 엿보면서 코틀린에 도움이 되는 공부는 무엇인지 더 물어볼 수도 있었다!

 

공통 피드백

우테코에서는 공통 피드백을 과제 발표일 아침에 업로드해준다.

이번 글에는 2주차 공통 피드백도 같이 정리해보려고 한다.

 

1. README.md 를 상세히 작성한다.

해당 프로젝트가 어떤 프로젝트인지, 주요 기능이 무엇인지 소개하자

 

2. 기능 목록을 재검토한다.

정상적인 경우 뿐만 아니라 예외 상황도 함께 정리한다.

 

3. 기능 목록을 업데이트한다.

 

4. 값을 하드 코딩하지 않는다.

상수를 정의하고 의미 있는 이름을 부여하여 해당 값이 어떤 역할을 하는지 명확히 드러낸다.

 

관련 지식 하드코딩이란?

'나중에 바뀔 수도 있는 값'이나 '환경에 따라 달라져야 하는 값'을 소스 코드 안에 직접 고정해서 써넣는 것을 말합니다.

하드라는 단어처럼 '딱딱하게 굳어있다'는 의미입니다.

하드 코딩 예시) 매직넘버, 설정 값, 파일 경로

 

5. 구현 순서도 코딩 컨벤션이다.

클래스는 프로퍼티, init 블록, 부생성자, 메서드, 동반 객체 순으로 작성한다.

 

6. 변수 이름에 자료형은 사용하지 않는다.

 

7. 한 메서드가 한 가지 기능만 담당하게 한다.

 

8. 메서드가 한 가지 기능을 하는지 확인하는 기준을 세운다.

메서드의 길이가 길어지면 여러 기능을 포함하고 있을 가능성이 커지므로, 15라인이 넘지 않도록 구현하면 의식적으로 메서드를 분리하는 연습을 할 수 있다.

 

9. 테스트를 작성하는 이유에 대해 본인의 경험을 토대로 정리해본다.

학습테스트를 통해 JUnit 학습하기.pdf
0.14MB

우테코에서 제공해준 자료

10. 처음부터 큰 단위의 테스트를 만들지 않는다.

- 큰 단위의 테스트

    - 자동차 경주 게임을 시작하여, 사용자가 이름과 진행 횟수를 입력하고, 게임을 진행한 후 결과를 확인한다.

 

- 작은 단위의 테스트

    - 무작위 값이 4 이상이면 자동차가 전진한다.

    - 무작위 값이 3 이하면 자동차가 전진하지 않는다.

 

마무리

이번 공통 피드백은 지난번의 피드백 양보다 훨씬 적다. 아직 1주차 공통 피드백에 걸어준 링크를 모두 학습하지 못했는데, 다행히 2주차 피드백이 적어서 이번 주에는 모든 피드백을 학습할 수 있겠다!

이번주도 화이팅!