본문 바로가기
우테코 프리코스

[우테코] 7기 프리코스 3주차 회고

by ♡˖GYURI˖♡ 2024. 11. 6.
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주차 미션에서는 활용할 수 있도록 할 것