인프런 지식공유자 최태현 님의 자바 스프링부트 서버개발 올인원 강의 커리큘럼에 포함된 과제입니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인
최태현 | Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한
www.inflearn.com


클린코드
클린 코드란 쉽게 말해 '더 나은 코드'로 가독성이 높고 이해하기 쉬운, 유지보수가 용이한 코드를 작성하는 개발 방법론이다. 아래와 같은 부분에 중점을 두고 코드를 고쳐보았다.
- 클래스명, 함수명, 변수명을 명확한 의도를 전달하게
- 간결하고 중복을 최소화하게
- 각 메소드가 한 가지의 일만 처리하고 의존성을 줄이게
리팩토링
import java.util.Random;
import java.util.Scanner;
public class DiceClean {
private static final int DICE_SIZE = 6;
// rollDice: 주사위 던지고 배열에 횟수 저장
public static int[] rollDice(int throwsCount) {
int[] counts = new int[DICE_SIZE];
// Random클래스로 nextInt() 사용해 랜덤정수 생성
Random random = new Random();
for (int i = 0; i < throwsCount; i++) {
// 0~(DICE_SIZE-1)난수 생성후 +1: 주사위값임을 명확하게
int roll = random.nextInt(DICE_SIZE) + 1;
// 던질 때마다 인덱스에 횟수증가
counts[roll - 1]++;
}
return counts;
}
// printResults: 결과 출력
public static void printResults(int[] counts) {
for (int i = 0; i < counts.length; i++) {
System.out.printf("%d는 %d번 나왔습니다.\n", i + 1, counts[i]);
}
}
public static void main(String[] args) {
System.out.println("숫자를 입력하세요 : ");
Scanner scanner = new Scanner(System.in);
int throwsCount = scanner.nextInt();
int[] results = rollDice(throwsCount);
printResults(results);
}
}
- 메소드 분리해 모듈화
- 변수명 직관적으로 변경
- math.random() 대신에 random.nextInt()로 난수로 정수를 생성해 더 주사위다운 코드로 만들기
- 각 메소드 설명하는 주석 추가
- 주사위 면체를 상수로 지정해 DICE_SIZE만 변경하여 재사용 가능하게

'인프런 워밍업 클럽 1기 - 백엔드' 카테고리의 다른 글
| 6일차 과제 - Controller - Service - Repository 계층 분리 (0) | 2024.05.13 |
|---|---|
| 4일차 과제 - API 만들기 2 (0) | 2024.05.07 |
| 3일차 과제 - 람다식에 대해 (0) | 2024.05.03 |
| 2일차 과제 - api 만들기 (0) | 2024.05.01 |
| 1일차 과제 - 어노테이션(서버 개발을 위한 환경설정 및 네트워크 기초) (0) | 2024.04.29 |