728x90
3주차 미션을 구현하며 2주차 공통 피드백과 함께, 2주차 미션에 대해 PR 리뷰를 통해 받았던 피드백들을 준수하려 노력하였다.
2주차 공통 피드백
- README 상세히 작성하기
- 기능 목록 재검토하기
- 기능 목록 업데이트하기
- 값을 하드 코딩하지 않기
- 구현 순서 지키기
- 변수 이름에 자료형 사용하지 않기
- 한 메서드가 한 가지 기능만 담당하게 하기
- 처음부터 큰 단위의 테스트 만들지 않기
PR 리뷰 피드백
- 제대로 된 AppConfig 만들기
- 일급 컬렉션 활용하기
- 가독성 챙기기
- 에러메세지 따로 관리하기
- 서비스 레이어 만들기
👏 3주차 잘한 점 & 아쉬운 점
잘한 점
- README의 기능목록을 꾸준히 업데이트함
- 특히, 그때그때 떠오르는 예외사항들을 꼼꼼히 작성하려 노력함
- README에 개요와 함께 상세한 프로그램 설명을 추가함
- 누구나 이해할 수 있는 프로그램 설명서를 만듦
- View를 역할에 따라 구분함
- InputView, OutputView, ErrorView
- 이 부분은 ErrorView를 나눈 이유에 대해 PR 리뷰 시 질문이 몇 개 달렸지만, 개인적으로 서로 담당할 역할이 다르기 때문에 나눠야 한다고 생각함
- 역할에 따라 도메인을 상세히 분리함
- BonusNumber, Lotto, Lottos, Money, Prize, PrizeResult, ProfitRate, WinningLotto
- 각 도메인이 스스로를 검증하는 책임을 하도록 구현
- BiPredicate 활용
- Prize의 isWinningCondition을 BiPredicate<Integer, Boolean>으로 선언
- matchCount(일치하는 개수)와 containsBonusNumber(보너스 볼 일치 여부)를 test()의 파라미터로 사용
- 로또 생성 시 sorted()를 사용하여 오름차순 정렬된 상태로 생성
- 단위 테스트 작성
- 가장 작은 단위의 테스트부터 구현
- 큰 테스트부터 만드는 것보다 쉽고 간결했음
- 오히려 테스트 커버리지가 높아짐
아쉬운 점
- 여전히 controller의 의존성이 높음
- InputView, OutputView, ErrorView, 그리고 LottoService를 주입받음
- 4주차 미션에서는 통합 View를 만들어 구현하면 의존성을 줄일 수 있을 것 같음
- 재입력 기능을 구현하는데 있어 미숙
- 예를 들어 구매 금액을 입력 받아 Money 객체를 리턴해야 하는 함수의 흐름은 다음과 같음
- Money 객체를 null로 선언 → null이 아닐 때까지 while문 반복
- null을 다룰 경우 위험 요소가 많기에 지양해야 하는 방법
- 4주차 미션에서는 Supplier를 활용하여 중복을 최소화하고 null을 직접 다루지 않도록 구현할 것
- validation의 형식 반복
- 함수형 인터페이스에 대한 공부 필요 (Predicate)
- 빌더 패턴을 함께 이용하여 메서드 체이닝으로 묶는 방법에 대해서도 공부 필요
- 4주차 미션에서는 적용해볼 수 있도록 할 것
- Lottos 도메인의 기능 부족
- Lottos 도메인을 단순히 List<Lottos>를 저장하고 get 해오는 역할로 생각
- Lottos가 주체가 되어 수행할 수 있는 기능들이 존재한다고 판단
- 4주차 미션에서는 역할 분리에 대해 더 고민해 볼 것
- 요구사항 꼼꼼히 챙기기
- 1등을 2번 할 경우 int 타입으로 처리할 수 없음 → long을 사용했어야 함
- 수익률도 출력 시 포맷팅이 필요함
- 4주차 미션은 더욱 꼼꼼히 확인할 것
- 테스트 코드 공부
- 테스트 코드도 코드
- @MethodSource 등 활용할 수 있는 어노테이션들에 대해 공부할 것
- 4주차 미션에서는 활용할 수 있도록 할 것
'우테코 프리코스' 카테고리의 다른 글
[우테코] 7기 프리코스 2주차 회고 (1) | 2024.10.31 |
---|---|
[우테코] 7기 프리코스 1주차 회고 - 2탄 (0) | 2024.10.23 |
[우테코] 7기 프리코스 1주차 회고- 1탄 (2) | 2024.10.22 |
[우테코] 4주차 회고 (0) | 2023.11.23 |
[우테코] 3주차 회고 (1) | 2023.11.23 |