리팩토링 007 - 클래스 추출

동작은 시스템 전체에서 반복됩니다. 그러나 우리는 개념을 놓치고 있습니다

TL;DR: Put together what belongs together



해결된 문제


  • 코드 중복
  • 누락된 추상화
  • 낮은 응집력

  • 관련 코드 냄새











    단계


  • 새로운 개념에 결합된 메서드(및 실수로 속성) 추출
  • 신개념 사용

  • 샘플 코드



    전에




     final class Person {
    
          private String name;
    
          // Below cohesive properties
          private String homeAreaCode;
          private String homeNumber;
    
          public String name() {
              return name;
          }
    
          // Below cohesive behaviour
          public String telephoneNumber() {
              return ("(" + homeAreaCode + ") " + homeNumber);
          }
          String areaCode() {
              return homeAreaCode;
          }
          String officeNumber() {
              return officeNumber;
          } 
     }
    
    


    후에




    // 1. Extract the methods (and accidentally the properties) coupled into a new concept      
       public class TelephoneNumber {
    
          private String number;
          private String areaCode;
    
          public String telephoneNumber() {
              return ("(" + areaCode + ") " + _number);
          }
          public String areaCode() {
              return areaCode;
          }
          public String number() {
              return number;
          }
       }
    
    final class Person {
    
          private String name;
    
          // 2. Use the new concept
          private TelephoneNumber officeTelephone = new TelephoneNumber();
    
          public String name() {
              return name;
          }
          public String telephoneNumber(){
              return officeTelephone.getTelephoneNumber();
          }
    
      }
    
    
    


    유형



    [X] 자동

    대부분의 IDE는 이 안전한 리팩터링을 구현합니다.

    왜 코드가 더 나은가요?



    논리 코드는 규칙과 함께 한 곳에 있습니다.

    태그


  • 수업

  • 또한보십시오



    Refactoring.com

    Refactoring Guru

    학점



    drpepperscott230에서 Pixabay의 이미지


    이 기사는 리팩토링 시리즈의 일부입니다.

    좋은 웹페이지 즐겨찾기