2021.11.01 TIL

pbg0205·2021년 11월 1일
0

TIL

목록 보기
4/13

리팩토링 1판 독서

1. 중복 코드

  • 똑같은 코드 구조가 두 군데 이상 있을 때그 부분을 하나로 통일하면 프로그램이 개선된다.

가장 단순한 예는 한 클래스의 두 메서드 안에 같은 코드가 들어 있는 경우다.

  • 이 때는 메서드 추출 기법을 적용한다.
    • 메서드 추출 기법
    [리팩토링 전]
    
        void printOwing(double amount) {
        		printBanner();

        		System.out.println("name:" + _name);
        		System.out.println("amount" + amount);
        }
    [리팩토링 후]
    
        void printOwing(double amount) {
        		printBanner();
        		printdetails(amount);
        }
        
        void printDetails(double amount) {
        		System.out.println("name:" + _name);
        		System.out.println("amount" + amount);
        }

한 클래스의 두 하위 클래스에 같은 코드가 들어 있는 경우

  • 이럴 때는 메서드 추출 기법을 적용해서 중복을 없앤 후 **메서드 상향 기법**을 적용하면 된다.

코드가 똑같지 않고 비슷할 경우

  • 메서드 추출 기법을 적용해서 같은 부분과 다른 부분을 분리하고 템플릿 메서드 형성 기법을 적용해야 할 수도 있다.

두 메서드가 알고리즘만 다르고 기능이 같을 경우,

  • 두 알고리즘 중에서 더 같단한 것을 대해 알고리즘 전환을 적용하면 된다
  • 중복 코드가 메서드 가운데에 있다면 주변 메서드 추출을 적용하면 된다.

서로 상관없는 두 클래스 안에 중복 코드가 존재할 때

  • 한 클래스 안에 중복코드를 클래스 추출이나 모듈 추출을 적용해서 제 3의 클래스나 모듈로 떼어낸 후 그것을 다른 클래스에서 호출하는 방법이다.
    • 또는 중복 코드를 메서드로 만든 후 그 메서드를 두 클래스 중 하나에 넣고 다른 클래스에서 그 메서드를 호출하거나,
    • 코드를 빼내어 만든 메서드를 제 3의 클래스에 넣고 그걸 두 클래스에서 호출하는 방법.
profile
🧑‍💻 steady developer

0개의 댓글