TDD, 클린 코드 with Java 18기: 로또 - TDD(로또(자동))

yshjft·2024년 5월 20일
0

로또 - TDD(로또(자동))

리뷰 내용

🤔 리뷰 링크

로또 - TDD: 2단계 로또(자동) #3624


🤔 클래스 네이밍

질문

현재 Lottos에 로또를 받은 금액 만큼 로또를 생성하고 결과를 반환 하는 역할을 부여하였습니다. 
혹시 좀 더 좋은 클래스 이름이 있을까요? 

리뷰어

  • 클래스 이름이 고민된다는 것은 역할과 책임이 명확하지 않다는 신호일 수 있다.

🤔 변수 네이밍

질문

List 또는 Set 타입의 변수 이름을 지을 때 자료형이 드러나도록 지으시나요?

리뷰어

  • 자료형은 요구사항에 따라 달라질 수 있으니 변수명에는 자료형보다 복수형을 이름을 사용하라.

🤔 메서드 선언 순서

질문

클래스 내에서 메서드 순서를 어떻게 하시나요? 생성자에서 값 검증을 위해서 사용하는 
priavate 메서드를 정적 팩토리 메서드 바로 밑에 두고 있는데 이게 좋은 방식인지 모르겠습니다.

리뷰어

자바에서 메소드 순서


🤔 플랫폼 독립적인 줄바꿈 문자 사용

리뷰어


🤔 단순 반복문을 stream으로 대체해 보자

리뷰어

  • 단순 반복문(for)을 stream으로 대체해보는건 어떨지?

range, rangeClosed


🤔 직관적인 코드와 타입

리뷰어

  • 코드의 직관성을 위해서 의미에 맞는 타입을 사용하자
    • 클래스 이름만 보면 '금액'이라는 숫자 타입의 상태를 관리할 것이라고 예상되니 문자열 보다는 숫자 값을 넘기는 것이 더 직관적이다.
    • 다른 개발자와 협업할 때도 직관적인 코드(직관적인 타입을 사용)를 사용하는 것이 훨씬 편의성을 높일 수 있다.

🤔 책임 분배

리뷰어

  • 입력값에 대한 검증(ex. null )은 입력을 처리하는 InputView에서 처리할 수 있을거라고 생각한다.

🤔 단위가 큰 숫자에 언더스코어(_)를 이용해서 가독성을 개선하자

리뷰어


🤔 배열보다는 컬랙션

리뷰어

  • 배열보다는 컬랙셕을 사용하라

배열보다 컬랙션을 사용해야 하는 이유


🤔 생성자를 활용하자

리뷰어

테스트 코드에서 생성자를 활용하면 좀 더 쉽게 테스트 코드를 작성할 수 있다.


🤔 상수 선언 및 풀을 사용하자

리뷰어
매번 생성하지 말고 상수와 풀을 활용하자


🤔 예외 관리

리뷰어

  • 예외 메시지에 디버깅을 위하여 예외 발생 원인을 포함시키는게 좋을거 같다.
  • 사용자 정의 예외 클래스를 만들어 예외 메시지를 따로 관리해주는게 좋을거 같다. 이를 통해 예외 메시지 수정으로 인한 영향을 제한할 수 있다.
profile
꾸준히 나아가자 🐢

0개의 댓글