
과제 5. 클린 코드
현재의 코드를 클린하게 바꿔보자.
우리는 <클린 코드>라는 개념을 배웠습니다. <클린 코드>에 대한 감각을 익히기 위해서는 어떤 코드가 좋은 코드이고, 어떤 코드가 좋지 않은 코드인지 이론적인 배경을 학습하는 것도 중요할 뿐 아니라, 다양한 코드를 읽어 보며 어떤 부분이 읽기 쉬웠는지, 어떤 부분이 읽기 어려웠는지, 읽기 어려운 부분은 어떻게 고치면 좋을지 경험해보는 과정이 필요합니다.
이번 과제는 제시된 코드를 읽어보며, 코드를 더 좋은 코드로 고쳐나가는 과정입니다. 구글에 “클린 코드” 혹은 “클린 코드 정리”를 키워드로 검색해보면, 이론적인 배경을 충분히 찾아보실 수 있습니다. 🙂 그러한 내용들을 보며 제시된 코드를 더 좋은 코드로 바꿔보세요! (코드를 바꿀 때 왜 바뀐 코드가 더 좋은 코드인지 다른 사람에게 설명하신다고 생각해보시면 더욱 좋습니다.)
한걸음 더!
현재 코드는 주사위가 1 ~ 6이라는 가정으로 작성되어 있는데 주사위의 눈의 수가 12나 20처럼 크다면 바꿔야 할 게 더 많아진다. 이러한 불편을 줄여보자
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.print("숫자를 입력하세요 : ");
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0;
for (int i = 0; i < a; i++) {
double b = Math.random() * 6;
if (b >=0 && b <1 ) {
r1 ++;
} else if (b >= 1 && b < 2) {
r2 ++;
} else if (b >= 2 && b < 3) {
r3 ++;
} else if (b >= 3 && b < 4) {
r4 ++;
} else if (b >= 4 && b < 5) {
r5 ++;
} else if (b >= 5 && b < 6) {
r6 ++;
}
}
System.out.printf("1은 %d번 나왔습니다. \n", r1);
System.out.printf("2은 %d번 나왔습니다. \n", r2);
System.out.printf("3은 %d번 나왔습니다. \n", r3);
System.out.printf("4은 %d번 나왔습니다. \n", r4);
System.out.printf("5은 %d번 나왔습니다. \n", r5);
System.out.printf("6은 %d번 나왔습니다. \n", r6);
}
}
현재는 일일히 다 코드를 직접 치고 있다. 또한 랜덤 난수의 값도 일일히 체크해서 범위에 들어오는지 찾고 있다. 나는 이러한 점을 고치기 위해 먼저 배열을 사용해보자고 생각했다. 주사위의 눈의 수만큼의 크기를 가진 배열을 만들고 이것들을 0번 인덱스에는 1번 눈이 나온 횟수, 1번 인덱스에는 2번 눈이 나온 횟수....를 끝까지 해서 각 인덱스의 수를 프린트해주면 될 것이라고 생각했다. 또한 주사위의 눈의 수를 처음부터 스캐너에 입력받아서 그 수를 사용해서 반복문을 실행하면 좋을 것 같다고 생각했다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("숫자를 입력하세요 : ");
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
System.out.println("주사위의 눈의 수를 입력하세요 : ");
int dice_eyes = scanner.nextInt();
int[] array = new int[dice_eyes];
for (int i = 1; i <= a; i++) {
double b = Math.random() * dice_eyes;
int result = (int) (b + 1);
array[result-1]++;
}
for (int i = 0; i < dice_eyes; i++) {
int count = array[i];
System.out.printf("%d은 %d번 나왔습니다.\n", i+1, count);
}
}
}
먼저 난수의 범위에 +1을 더한 후, 정수화해줘서 나온 주사위의 수를 배열에 담았다. 또한 이것을 주사위의 눈만큼 반복해서 몇 번의 횟수를 출력하는지 뽑아줬다.
댓글을 작성해보세요.