로또 프로그램

Updated:

TDD 연습 하기 - 로또 프로그램

1단계 연습 : 메소드 분리

규칙1 : 한 메서드에 오직 한 단계의 들여쓰기만 한다.

규칙2 : else 예약어를 쓰지 않는다

  • 규칙2-1 : 메소드는 10줄 이상 넘어가지 않는다.

2단계 연습 : 객체 분리

규칙3 : 모든 원시값과 문자열을 포장한다.

규칙4 : 모든 엔티티를 작게 유지한다.

규칙5 : 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.

규칙6 : 일급 콜렉션을 쓴다.

3단계 연습 : 클린코드

규칙7 : 한 줄에 점을 하나만 찍는다.

규칙8 : 줄여쓰지 않는다.

규칙9 : getter, setter, 프로퍼티를 쓰지 않는다.

요구사항

  1. 로또 숫자 구성
    • 숫자 범위: 1~42
    • 갯수: 기본 번호 6개 + 보너스 번호 1개
  2. 당첨 규칙
    • 1등: 기본 번호 6개 일치
    • 2등: 기본 번호 5개 일치 + 보너스 번호 1개 일치
    • 3등: 기본 번호 5개 일치
    • 4등: 기본 번호 4개 일치
    • 5등: 기본 번호 3개 일치
  3. 시뮬레이션 프로세스
    • n개의 로또 자동 생성
    • 당첨 번호 생성
    • n개의 로또의 당첨여부를 통계내어 출력

해본 후기

TDD 로 처음 구현해봤는데 생각보다 어렵다.

TDD를 알기전에는 마구잡이로 개발했다고 한다면 여긴 TDD의 규칙에 따라 조금씩 함수 하나에 대해서 구현하고 다시 다른 함수를 구현해 나가는 점진적인 방식이었다.

문제는 어렵지는 않으나 TDD 와 git 규칙을 준수하며 하다보니 익숙치가 않아 계속해서 내가 생각한 설계가 잘못 됨을 느꼈다.

문제가 주어졌다면 TDD 1장에서 읽은 대로 클래서의 속성보단 행위에 대해서 전체적으로 구상을 한 후에 개발을 해야겠다.

물론 개발은 한 단계씩 점차적으로 해야겠지만 말이다.

github 주소

https://github.com/sunlike0508/lotto