본문 바로가기
[JAVA]

[처음부터 다시 하는 JAVA] 배열 리펙토링

by 북방바다코끼리표범 2024. 1. 17.

처음부터 다시 하는 자바 공부는 인프런의 김영한 강사님의 강의를 참고해서 공부했다.

 

배열 리펙토링

배열 리펙토링 - 변수 값 사용
이제 배열을 사용해서 코드를 단계별로 리펙토링 해보자. 
먼저 변수 값을 사용한 부분을 변경해보자.

//변수 값 사용
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 < students.length; i++) {
			System.out.println("학생" + (i + 1) + " 점수: " + students[i]);
        } 
    }
}
  • 반복문을 사용해서 배열을 통해 값을 사용하는 부분을 효과적으로 변경했다. 
  • 배열의 인덱스는 0부터 시작하기 때문에 반복문에서 i = 0 을 초기값으로 사용했다. 
  • students.length
    • 배열의 길이를 제공하는 특별한 기능이다.
    • 참고로 이 값은 조회만 할 수 있다. 대입은 할 수는 없다. 
    • 현재 배열의 크기가 5이기 때문에 여기서는 5가 출력된다.
  • 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} 의 내용만 변경하면 된다. 그러면 나머지 코드는 변경하지 않아도 된다.
배열을 사용한 덕분에 프로그램을 전체적으로 잘 구조화 할 수 있었다.