3주차 로또 리뷰

·2022년 11월 16일
0

목표

클래스 분리

신경 썼던 점 & 배운 점

  • Enum 사용(에러 코드 관리, 로또 당첨 결과 관리)
  • DTO VS VO
  • 예외 처리(throw, throws, try-catch 등)

Review

  • 1, 2주차 미션 때 배우고, 신경 썼던 모든 부분은 그대로 유지한다.
  • 도메인 객체에서 로그성 메세지(toString()) 이외의 View 관련은 전부 UI 객체에게 위임
    • Getter를 사용해서 View에게 데이터 전달
  • 객체를 단순 저장소로 쓰지 말고 객체 답게 사용
    • VO로 사용한 Lotto 클래스의 경우 Getter로 꺼내서 사용하지 말고 필드 메서드를 추가
  • 필드 변수는 최대한 간결
    • 필요한 변수가 있으면 calculate~() 등의 메서드 사용
  • assertThatThrownBy(), isInstanceOf() 등으로 예외 테스트 케이스 작성
  • 테스트 케이스에서 단순히 파라미터만 바뀐다면 @ValueSource, @ParameterizedTest 사용

느낀 점 & 생각

  • 1, 2주차는 너무 단순했고 이번 로또 미션도 간단하긴 했지만 추가된 제한 사항이나 배울 것들이 더 많아서 재밌었다.
  • Enum을 상수화에 자주 사용해야겠다.
  • RuntimeException의 부모가 Exception이기 때문에 throws Exception이 가능할 줄 알았다. 하지만 Exception은 checked exception만 해당하는 것이였고, RuntimeException은 throws 예약어가 없어도 caller에게 스택을 따라 넘어간다.
  • VO는 불변객체라는 것만 알고 있었는데, 로직이 추가되어도 된다는 것은 몰랐다. Lotto에게 역할을 더 위임했어야 했던 것 같다.
  • domain, controller, view 이렇게 나누는 것이 좋은 것 같다. 익숙해져야겠다. 인터페이스까지 만들어서 ISP를 만족시키면 좋겠지만 과하다고 생각해서 적용하지 않는 중이다.
profile
渽晛

0개의 댓글