공부/인프런 워밍업 클럽_BE

[인프런 워밍업 클럽_0기] BE 다섯 번째 과제 (진도표 5일차)

데부한 2024. 2. 22. 22:38
반응형

이미지를 누르면 해당 링크로 이동합니다.

 

강의 출처

 

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인

Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들

www.inflearn.com

 

 

진도표 5일차와 연결됩니다
우리는 <클린 코드>라는 개념을 배웠습니다. <클린 코드>에 대한 감각을 익히기 위해서는 어떤 코드가 좋은 코드이고, 어떤 코드가 좋지 않은 코드인지 이론적인 배경을 학습하는 것도 중요할 뿐 아니라, 다양한 코드를 읽어 보며 어떤 부분이 읽기 쉬웠는지, 어떤 부분이 읽기 어려웠는지, 읽기 어려운 부분은 어떻게 고치면 좋을지 경험해보는 과정이 필요합니다.
이번 과제는 제시된 코드를 읽어보며, 코드를 더 좋은 코드로 고쳐나가는 과정입니다. 구글에 “클린 코드” 혹은 “클린 코드 정리”를 키워드로 검색해보면, 이론적인 배경을 충분히 찾아보실 수 있습니다. 🙂 그러한 내용들을 보며 제시된 코드를 더 좋은 코드로 바꿔보세요! (코드를 바꿀 때 왜 바뀐 코드가 더 좋은 코드인지 다른 사람에게 설명하신다고 생각해보시면 더욱 좋습니다.)
 
[제시된 코드]
여러 함수로 나누어도 좋습니다! 🙂
여러 클래스로 나누어도 좋습니다! 🙂

 

문제

 주사위 사진 예시 : https://www.google.com/search?sca_esv=600310596&rlz=1C5CHFA_enKR1067KR1067&sxsrf=ACQVn0_iT-qBMV0p_q-wUsDQsHY8hFBtlA:1705893428440&q=정십이면체+주사위&tbm=isch&source=lnms&prmd=ivsnbmz&sa=X&ved=2ahUKEwjMqc6ehPCDAxUSk1YBHUYeCcEQ0pQJegQIDhAB&biw=1512&bih=806&dpr=2

 

반응형

 

풀이

제일 먼저 눈에 들어오는 숫자를 받아오는 코드 세 줄을 getPlayNumber() 메서드로 뺐다.

public static int getPlayNumber() {
    System.out.print("숫자를 입력하세요 : ");
    Scanner scanner = new Scanner(System.in);
    return scanner.nextInt();
}

 

그리고 주사위에 대해 고민하다가 따로 주사위에 대한 클래스를 만들어주는게 나을 거 같아 도메인에 Dice 클래스도 만들었다.

그러면서 주사위와 관련된 로직은 모두 도메인 클래스로 빼버렸다.

public class Dice {

    private int limit; // 숫자 범위
    private int playNumber; // 주사위 던지는 횟수

    public Dice(int limit, int playNumber) {
        this.limit = limit;
        this.playNumber = playNumber;
    }

    public void play() {
        int[] numbers = new int[limit+1];

        for(int i = 0; i < playNumber; i++) {
            numbers[(int) (Math.random() * limit)]++;
        }

        resultPrint(numbers);
    }

    private void resultPrint(int[] numbers) {
        for (int i = 1; i < numbers.length; i++) {
            System.out.printf("%d은 %d번 나왔습니다\n", i, numbers[i]);
        }
    }
}

 

그리고 Main 메서드를 아래와 같이 정리!

public static void main(String[] args) {

    int playNumber = getPlayNumber();

    Dice dice = new Dice(6, playNumber); // 주사위의 면체와 입력받은 playNumber로 주사위 객체 생성

    dice.play();
}

 

오늘도 코드에 대해 생각하는 시간을 가질 수 있어서 좋았다!

반응형