이제 배열을 사용해서 코드를 단계별로 리팩토링 해보자.
먼저 변수 값을 사용한 부분을 변경해보자.
// 변수 값 사용
System.out.println("학생1 점수 = " + students[0]);
System.out.println("학생2 점수 = " + students[1]);
System.out.println("학생3 점수 = " + students[2]);
System.out.println("학생4 점수 = " + students[3]);
System.out.println("학생5 점수 = " + students[4]);
변수명이 students
로 같기 때문에 숫자가 반복되는 부분만 해결하면 반복문을 도입할 수 있을 것 같다. for
문을 사용해서 문제를 해결해보자.
참고 : 리팩토링
리팩토링(Refactoring)은 기존의 코드 기능은 유지하면서 내부 구조를 개선하여 가독성을 높이고, 유지보수를 용이하게 하는 과정을 뜻한다. 이는 중복을 제거하고, 복잡성을 줄이며, 이해하기 쉬운 코드로 만들기 위해 수행된다. 리팩토링은 버그를 줄이고, 프로그램의 성능을 향상시킬 수도 있으며, 코드의 설계를 개선하는 데에도 도움이 된다.
쉽게 이야기 해서 작동하는 기능은 똑같은데, 코드를 개선하는 것을 리팩토링이라 한다.
package array;
public class Array1Ref2 {
public static void main(String[] args) {
int[] students; // 배열 변수 선언
students = new int[5]; // 배열 생성
// 변수 값 대입
students[0] = 90;
students[1] = 80;
students[2] = 70;
students[3] = 60;
students[4] = 50;
// 변수 값 사용
for (int i = 0; i < 5; i++) {
System.out.println("학생" + (i + 1) + "점수 = " + students[i]);
}
}
}
i = 0
을 초기값으로 사용했다.students.length
for
문의 조건이 i < students.length
이기 때문에 i
는 0, 1, 2, 3, 4
까지만 반복한다.i
가 5가 되면 5 < 5
가 되면서 조건이 거짓이 되고, 반복을 종료한다.배열은 {}
를 사용해서 생성과 동시에 편리하게 초기화하는 기능을 제공한다.
int[] students; // 배열 변수 선언
students = new int[] {90, 80, 70, 60, 50}; // 배열 생성과 초기화
package array;
public class Array1Ref3 {
public static void main(String[] args) {
int[] students; // 배열 변수 선언
students = new int[] {90, 80, 70, 60, 50}; // 배열 생성과 초기화
// 변수 값 사용
for (int i = 0; i < students.length; i++) {
System.out.println("학생" + (i + 1) + "점수 = " + students[i]);
}
}
}
이해를 돕기 위해 배열 변수의 선언과 배열의 생성 및 초기화를 두 줄로 나누었지만 다음과 같이 한 줄도 가능하다.
int[] students = new int[]{90, 80, 70, 60, 50}; // 배열 변수 선언, 배열 생성과 초기화
배열은 {}
만 사용해서 생성과 동시에 편리하게 초기화하는 기능을 제공한다.
int[] students = {90, 80, 70, 60, 50};
단 이때는 예제와 같이 배열 변수의 선언을 한 줄에 함께 사용할 때만 가능하다.
물론 이렇게 하더라도 자바가 내부에서 배열 요소의 크기를 보고 new int[5]
을 사용해서 배열을 생성한다. 따라서 기존 코드를 조금 더 편리하게 사용할 수 있는 편의 기능이라 생각하면 된다.
int[] students;
students = {90, 80, 70, 60, 50};
package array;
public class Array1Ref4 {
public static void main(String[] args) {
//배열 생성 간략 버전, 배열 선언과 함께 사용시 new int[] 생략 가능
int[] students = {90, 80, 70, 60, 50};
// 변수 값 사용
for (int i = 0; i < students.length; i++) {
System.out.println("학생 " + (i + 1) + "점수 = " + students[i]);
}
}
}
이제 학생의 점수를 추가해도 {90, 80, 70, 60, 50}
의 내용만 변경하면 된다. 그러면 나머지 코드는 변경하지 않아도 된다.
배열을 사용한 덕분에 프로그램을 전체적으로 잘 구조화 할 수 있었다.