[인프런 BE 0기] 클린 코드

HeeYeon Kim·2024년 2월 23일
0

STUDY

목록 보기
11/15
post-thumbnail

인프런 워밍업 클럽 스터디 0기
BE 3일차

문제

  • 다음 코드를 클린 코드로 수정한다.

결과

수정

  • 지역 변수 r1~r6 => 배열 생성
    • r1~r6까지는 연속되는 숫자이므로 배열을 생성하여 불필요한 변수의 생성을 줄인다.

  • if-else문 => Math.ceil() 이용하여 계산
    • if-else문을 보면 double형 숫자 b의 소수자리를 올림하여 계산한다. 그러므 Math.ceil()을 이용하여 계산한다.

  • 출력 로직 => for문 이용하여 출력
    • System.out.printf()가 반복되고 있으므로 반복문을 이용하여 중복되는 코드를 제거한다.

  • 각 기능들을 메소드로 나눈다.
    • 모든 기능이 현재는 main함수에 들어가있다. 이를 입력 기능, 주사위 숫자 세는 기능, 출력 기능을 하는 메소드로 나눈다.



코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
import java.lang.Math;

public class Main {
    private final int diceMaxNum = 6; //주사위 숫자 범위
    private int [] diceCount = new int[diceMaxNum]; //나온 숫자의 횟수를 저장하는 배열 

    private int getNumberInputUser(){ //사용자에게 입력받는 메소드 
        System.out.print("숫자를 입력하세요 : "); // 숫자 입력 문구
        Scanner scanner = new Scanner(System.in); // 입력을 위한 Scanner 객체 생성
        return scanner.nextInt(); 입력받은 숫자 반환
    }

    private void printResult(){ //결과 출력하는 메소드 
        for(int i=0;i<diceCount.length;i++){ //배열 크기만큼 반복하여 결과 출력
            System.out.printf("%d은 %d번 나왔습니다.\n",i+1,diceCount[i]);
        }

    }

    private void rollDice(int count){ //주사위 숫자를 계산하는 메소드 

        for(int i=0;i<count;i++){// 사용자에게 입력받은 count만큼  주사위 굴림
            int diceNum = (int)(Math.ceil(Math.random()*diceMaxNum));
            //Math.random()을 이용해 0.0이상 diceMaxNum미만 숫자 반환
            //ceil() 이용해 올림
            diceCount[diceNum-1]++; //횟수 증가
        }
    }

    public void run() {
        int count = getNumberInputUser(); 
        rollDice(count); 
        printResult();
    }



    public static void main(String[] args) {
        Main game = new Main();
        game.run();
    }
}





강의

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

0개의 댓글