[Java Refactoring] 메서드 & 클래스 추출

728x90
반응형
SMALL

자바로 배우는 리팩토링 입문

  • Java Refactoring For Beginner
  • 건강한 코드로 소프트웨어 체질을 개선하자!
  • 유키 히로시 지금
  • 길벗 출판사
  • 2017.10.31

 

리팩토링을 위한 스터디 내용을 정리하자.

 

 

 

 


메서드 추출

 

메서드 안에 이런저런 세세한 처리가 많다면 그런 처리를 묶어서 나누고 독립된 메서드로 추출하는 것이 메서드 추출 리팩토링이다.

 

Before

public void print(int times) {

    System.out.println("+");
    for (int i = 0; i < content.length(); i++) {
        System.out.println("-");
    }
    System.out.println("+");
        
    for (int i = 0; i < times; i++) {
    	System.out.println("|" + content + "|");
    }

    System.out.println("+");
    for (int i = 0; i < content.length(); i++) {
        System.out.println("-");
    }
    System.out.println("+");
    
}

 

After

하나의 메서드 안에 테두리 ("+-------+")를 출력하는 기능과 내용(content)을 출력하는 기능이 들어 있다.

 

테두리 출력과 내용 출력을 각 각 메서드로 분류하자.

 

public void print(int times) {
    printBorder();
    printContent();
    printBorder();
}

private void printBorder() {
    System.out.println("+");
    for (int i = 0; i < content.length(); i++) {
        System.out.println("-");
    }
    System.out.println("+");
}

private void printContent() {
    for (int i = 0; i < times; i++) {
        System.out.println("|" + content + "|");
    }
}

 

IntelliJ IDEA에서는 이러한 기능을 제공한다.

 

메서드로 추출하고 싶은 부분을 드래그 한 뒤, Option + Command + m을 누르면 Extract Method 창이 나타난다.

 

추출할 메서드 Name을 입력하고, 파라미터를 설정하면 간편하게 메서드를 추출할 수 있다.

 

 

 

클래스 추출

클래스는 각각 정해진 일이 있어서 그 일을 완수할 책임이 있다.

 

클래스는 하나의 책임을 지는 것이 가장 이상적이다.

 

SOLID의 'SRP (Single Responsibility Principle) 단일 책임 원칙'과 일맥상통하는 이야기이다.

 

객체 지향과 SOLID에 대한 자세한 내용은 아래를 참고하자.

hoooon-s.tistory.com/12?category=956412

 

[Spring - Inflearn] Spring & Springboot & 객체 지향 설계

EJB - Enterprise Java Beans 과거 자바 진영 표준 기술 Spring, ORM 등을 가지고 있는 종합 선물 세트. But 높은 비용, 어렵고, 느리고, 복잡하다. 추가로 EJB에 너무 의존적..... 그래서 POJO 등장. 스프링 스프..

hoooon-s.tistory.com

 

 

728x90
반응형
LIST