벌써 3주차 미션이 끝났다. 4,5주차는 새로운 형태로 미션이 진행된다고 하는데 벌써 기대가 된다.
3주차 미션: 로또 발매기

미션을 시작하기 전,
이번 주부터 프로그래밍 요구 사항이 많아지기 시작했다.
- 기능을 구현하기 전에
README.md에 구현할 기능 목록을 정리해 추가하기 - indent depth 3 넘지 않기
- 3항 연산자 쓰지 않기
- 함수 최대한 작게 만들기
- 함수의 길이가 15라인 넘지 않도록 구현
- else 예약어 쓰지 않기
- Enum 사용하기
- 구현한 기능에 대한 단위 테스트 작성하기
2주차 미션을 얻은 피드백
- Controller에는 흐름 제어 코드만 작성하자
- 네이밍을 명확하게 하자(테스트명, 상수명, 클래스명 등)
- 에러 처리 할 때 메시지를 추가하자
- DRY 원칙을 준수하자
미션을 진행하면서,
1. 작은 단위로 테스트하고 커밋하기
이번 미션에서 작은 단위로 테스트 코드를 작성하고 기능을 구현한 뒤 바로 커밋하는 것이었다.
먼저 READMD.md에 정리한 체크리스트를 따라가면서 하나씩 구현하니 무엇을 해야 할 지 명확했고, 진행 상황도 한 눈에 파악할 수 있었다.
하지만 문제는 리팩토링 단게였다. 첫 구현을 마치고 구조를 변경하거나, 새로운 도메인을 추가할 때 문서를 어떻게 업데이트해야 할지 막막했다. 그래서 리팩토링 할 때는 문서를 먼저 작성한 것이 아니라 먼저 리팩토링하고 다시 문서를 작성하는 방향으로 했다.
2. MVC 패턴과 계층 분리 이해하기
저번 주에 이어 이번 주도 MVC 패턴을 적용했다. 저번 주에는 Controller의 역할이 애매모호했고, mdoel의 domain과 service 계층에 대한 이해가 부족했다.
가장 고민했던 질문들:
- Controller에서 도메인 객체를 생성해도 되는가?
처음 코드를 작성할 때 가장 큰 고민은 new LottoCoin(), new WinningLotto()처럼 도메인 객체를 직접 Controller에서 생성해도 되는가였다
여기서 나는 도메인 객체를 생성하는 것도 비즈니스 로직의 일부라고 판단했다.
왜냐면 Controller는 흐름 제어 역할만 담당해야 하고, "무엇을 할지만 결정"해야 한다고 판단했다. 그리고 로또 코인을 구매한다와 당첨 로또를 만든다는 행위들이 비즈니스 의미를 가진 행동처럼 느껴졌기 때문이다.
- Service는 어떤 책임을 가져야 하는가?
저번 주에는 비즈니스 로직은 Servie가 책임을 가져야 한다는 사실만 알고 있었지, 구체적으로는 알지 못했다. 더불어 domain과 service의 경계도 애매모호했다. 이번 미션을 통해 다음과 같은 기준을 세울 수 있었다.
domain은 하나의 객체 규칙을 정의하는 곳
service는 이러한 객체들을 활용하는 곳
마무리하면서
이번 주에 공부하고 익힌 것들
- MVC 패턴 좀 더 명확하게
- enum 사용법
- 단위 테스트 작성하는 이유
- 에러 메시지 관리
https://github.com/sinequanonn/java-lotto-8/tree/sinequanonn
GitHub - sinequanonn/java-lotto-8
Contribute to sinequanonn/java-lotto-8 development by creating an account on GitHub.
github.com
**블로그 새로 만들어서 프리코스 기간 때 작성했던 내용을 다시 옮겨 적었습니다
'우아한테크코스' 카테고리의 다른 글
| [우아한테크코스] 8기 BE 최종 합격 후기(+자소서) (0) | 2026.07.04 |
|---|---|
| [BE 8기] 우테코 프리코스 오픈미션 회고 (1) | 2026.01.25 |
| [BE 8기] 우테코 프리코스 2주차 회고 (0) | 2026.01.25 |
| [BE 8기] 우테코 프리코스 1주차 회고 (0) | 2026.01.25 |