Java 유지보수 코드 리팩토링

다음 주어진 코드를 보고 유지보수가 높은 코드로 수정해보도록 한다.

Program.class

public class Program {
    public static void helloJava() {
        System.out.println("프로그램 시작");
        System.out.println("Hello Java");
        System.out.println("프로그램 종료");
        System.out.println();
    }

    public static void helloSpring() {
        System.out.println("프로그램 시작");
        System.out.println("Hello Spring");
        System.out.println("프로그램 종료");
        System.out.println();
    }

    public static void main(String[] args) {
        helloJava();
        helloSpring();
    }
}

프로그램 시작
Hello Java
프로그램 종료

프로그램 시작
Hello Spring
프로그램 종료

다음의 코드에서 일부 출력 중복이 있다. 제거하고 하나로 통합하기

Program.class

public class Program {
    public static void hello(String str) {
        System.out.println("프로그램 시작"); // 변하지 않음
        System.out.println(str); // 변하는 부분
        System.out.println("프로그램 종료"); // 변하지 않음
        System.out.println();
    }

    public static void main(String[] args) {
        hello("Hello Java");
        hello("Hello Spring");
    }
}

  • 변하는 부분을 외부에서 문자열을 전달 받아 처리하였다.

이러한 코드는 중복을 제거하고, 좋은 코드로 유지하는 작업이다.
리팩토링에서는 변하는 부분과 변하지 않는 부분을 찾아내고, 변하지 않는 부분은 그대로 유지하였다.
그리고 변하는 부분은 그 코드를 수정하여 외부에서 전달 받는 방법으로 함수의 재사용성을 높였다. hello(String str) 함수는 재사용될 여지가 많은 함수이다. Java, Spring 뿐 아니라 다른 여러 문구를 넣어도 자연스럽게 출력할 수있다.