본문 바로가기

강의/TDD, Clean Code with Java 12기

[로또] step2 - 로또(자동) - 피드백 (20일차)

import java.util.Arrays;
import java.util.Collections;

 public class LottoMachine {

해당 객체가 가지고 있는 역할이 굉장히 많은 것 같아요 🤔
적절한 책임을 나누어 객체를 분리해보면 좋겠습니다!


public class LottoMachine {
    private static String[] lastLottoNumArray;
    private static ArrayList<String> lottoNumberList = new ArrayList<String>(Arrays.asList("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42"));

로또 번호가 42까지 밖에 안보이네요 @_@
또한 값의 범위가 커질수록 하드코딩 하는 것이 힘들어질 수 있기 때문에 범위를 통해 번호를 생성해보면 좋을 것 같아요!


public LottoMachine(String lastLottoNum, int numOfLotto) {
        this.lastLottoNumArray = checkValidInput(lastLottoNum);
        this.numOfLotto = numOfLotto;
    }

인스턴스에서 클래스 변수를 초기화하도록 설계하신 이유가 있을까요?
static 키워드가 어떠한 역할을 하는지 공부해보아요
static 클래스의 경우 final 키워드와 같이 작성해주는 것이 관례인데, 왜 이러한 관례가 생겼을지를 바탕으로 공부해보면 도움이 될 것 같습니다 :)


private static final int COUNT_OF_LOTTO = 6;
private static int numOfLotto;
private static int[] matchedLottoRecordArray = new int[COUNT_OF_LOTTO+1];
private static ResultView resultView = new ResultView();

InputView의 경우 LottoApp에서 사용하고 ResultView의 경우 도메인 내부에 존재하도록 구현해주셨네요!
도메인 내부에 View의 로직이 존재한다면 어떠한 문제가 있을지 고민해보아요