[우테코 프리코스 BE] 2주차 회고록

2025. 2. 26. 16:53·우아한 테크코스 프리코스

 


3주차 과제를 진행하기 전 회고록을 급하게 작성하려고 한다 ! 반성할 점은 뭔지, 더 개선해야할 점은 뭔지 정리를 하면 훨씬 코드를 짜는 데에 도움이 될 것 같다.

[https://github.com/woowacourse-precourse/java-racingcar-7/pull/982](https://github.com/woowacourse-precourse/java-racingcar-7/pull/982)
<hr>


## 2주차 [문자열 덧셈 계산기]

### 📌 프로젝트 소개  
이 프로젝트는 **자동차 경주 게임**을 구현합니다.  
사용자가 입력한 **경주할 자동차 이름**으로 주어진 **횟수만큼 이동**하며 경기를 진행합니다.  

- 각 자동차는 0~9 사이의 무작위 값을 통해 전진 여부를 결정합니다.  
- **4 이상**의 값이 나왔을 때 해당 자동차가 전진합니다.  
- **여러 대의 자동차**가 동일한 거리에 도달할 수 있으며, 이 경우 공동 우승자가 됩니다.  
- 잘못된 입력이 들어올 경우 **`IllegalArgumentException`**이 발생하며 애플리케이션이 종료됩니다.  

<br>

### 🎯 기능 요구 사항  
1. **자동차 이름**
   - 쉼표(`,`)로 구분된 문자열로 입력합니다.  
   - 각 이름은 **최대 5자**까지만 허용됩니다.  

2. **이동**
   - 사용자가 입력한 횟수만큼 경기를 반복합니다.  
   - 각 시도마다 **자동차별로 0~9 사이**의 무작위 값을 생성합니다.  
   - **4 이상**일 경우 자동차가 전진합니다.  

3. **우승자 결정**
   - 가장 멀리 전진한 자동차가 우승자가 됩니다.  
   - 우승자가 여러 명일 경우, **쉼표(,)로 구분**하여 표시합니다.  

4. **예외 처리**
   - 입력 값이 유효하지 않을 경우 **`IllegalArgumentException`**을 발생시키고 애플리케이션을 종료합니다.  

<br>

### 📝 입출력 요구 사항  
**입력**  
1. 쉼표로 구분된 경주할 자동차 이름 목록  
2. 시도할 횟수 (정수)  

**출력**  
- 매 시도마다 자동차별 전진 결과를 출력합니다.  
- 경기 종료 후 최종 우승자를 출력합니다. 

<br>

> 이번엔 저번주에 반성해야할 점에 대해 작성한 것을 지키려고 최대한 노력해보았다. 추가로 더 학습해야할 부분도 많겠지만 너무 욕심내지 않고, 한 단계씩 확실하게 공부하는 것이 목표기 때문에 전에 작성한 반성해야할 점을 위주로 지키려고 했다.

<br>

### 2주차 목표
- 예외 상황에 대해 더 깊이 고민해볼 것
- 메서드 이름을 어떤 동작을 하는지 알 수 있도록 정확히 작성할 것
- 책임을 분리하도록 더 자사히 메소드를 분리할 것
- if문이 많이 중첩되지 않도록 할 것
- 테스트 코드 작성해볼 것
- 배열 대신 컬렉션 사용해볼 것


<br>

### 배운 점 & 깨달은 점(+코드 리뷰)

2주차 목표를 지키기 위해서 하나하나 체크해가며 코드를 작성하였다. 다른 것은 최대한 지키려고 노력했지만 졸업 작품도 같이 준비하다보니, 테스트 코드까지 작성하기엔 시간이 좀 부족했다..! 통합적인 큰 테스트만 작성했는데, **이번 주엔 단위 테스트까지 작성하는게 목표**이다. 테스트 코드를 짤 때, 어려움을 겪느라 더 오래걸렸다. 큰 단위의 테스트는 단순히 결과값이 일치하는지 테스트 코드만 짜면 되지만 랜덤 값을 추출하는 경우엔 어떻게 그 값을 테스트하지..?라는 의문이 들면서 그 부분에 대해서는 테스트를 진행하지 못했다. 다른 분들의 코드를 보니 코드를 짤 때부터 테스트를 하기 위한 코드들을 작성하셨다. 이런 부분은 학습 후에 다음주 회고록을 작성할 때 배운 내용을 적어봐야겠다!
그리고 계층형 아키텍처에 대해 알아보면 어떠냐는 리뷰도 받았다. 사실 저번주에 작성한대로 기본적인 domain(model)-view-controller로만 작성하느라 각 클래스에 너무 많은 역할을 하게 만들었던 것 같다. 또한 **도메인 계층에서 뷰 계층을 직접 참조하는 것은 좋지 않다**는 것도 처음 알았다. 정말 배워도 배워도 배울게 계속 나오고 모르는 것도 정말 많은 것 같다. 그리고 그만큼 코드 리뷰를 하는 것이 정말 중요하다는 것도 깨달았다.

<br>

### 다음주 목표 
- 계층형 아키텍처에 대해 학습
- 단위테스트(1주 차 피드백 강의 참고)
- 도메인에서 뷰를 직접적으로 참조하지 않도록 하기
- 매직넘버는 상수로 빼기

'우아한 테크코스 프리코스' 카테고리의 다른 글

[우테코 프리코스 BE] 3주차 회고록  (0) 2025.02.26
[우테코 프리코스 BE] 1주차 회고록  (0) 2025.02.26
'우아한 테크코스 프리코스' 카테고리의 다른 글
  • [우테코 프리코스 BE] 3주차 회고록
  • [우테코 프리코스 BE] 1주차 회고록
bogyeom
bogyeom
백엔드 개발자 준비중
  • bogyeom
    딩코링코
    bogyeom
  • 전체
    오늘
    어제
    • 분류 전체보기 (10)
      • Node.js (0)
        • 크리스마스 미니홈피 (0)
      • SPRINGBOOT (2)
        • 음악 스트리밍 서비스 (2)
        • 식당 추천 서비스 (0)
      • 우아한 테크코스 프리코스 (3)
      • 알고리즘 오답노트 (5)
        • JAVA (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
bogyeom
[우테코 프리코스 BE] 2주차 회고록
상단으로

티스토리툴바