본문 바로가기
스터디/워밍업-클럽

[인프런 워밍업 클럽] 5일차 - 클린 코드

by 빙수야 팥빙수야 2024. 2. 23.

📌 문제

 

📌 한 걸음 더!

package com.group.libraryapp.homework5;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws Exception {
        printDiceSizeInputInfo();
        // 숫자를 하나 입력 받는다.
        int diceSize = inputDiceSize();
        // 입력 받은 숫자의 주사위를 생성하고 주사위 크기만큼 주사위를 던진다.
        int[] diceCounts = rollDice(diceSize);
        // 각 숫자가 몇 번 나왔는지 출력한다.
        printResult(diceCounts);
    }

    private static void printDiceSizeInputInfo() {
        System.out.print("주사위 숫자를 입력하세요 : ");
    }

    private static int inputDiceSize() {
        Scanner scanner = new Scanner(System.in);
        return scanner.nextInt();
    }

    private static int[] rollDice(int diceSize) {
        int[] dice = new int[diceSize];
        for (int i = 0; i < diceSize; i++) {
            int diceNum = (int)(Math.random() * diceSize) + 1;
            dice[diceNum - 1] += 1;
        }
        return dice;
    }

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

 

클린 코드 원칙에 따라 하나의 함수에는 하나의 기능만 넣었고, 제 3자가 읽기 쉽도록 최대한 노력했습니다.

원하는 로직을 바로 찾을 수 있게 함수명도 신경써서 지었습니다.

그리고 주사위의 숫자 범위가 달라지더라도 그 숫자 범위만큼 주사위를 돌릴 수 있도록 로직을 바꿨습니다.

 

 

 

강의 링크

https://inf.run/XKQg

 

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

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

www.inflearn.com