0

아래 코드는 Long Parameter List Smell 메서드입니다.매개 변수 그룹을 기존 클래스로 그룹화 할 수 있지만이 매개 변수는 개체에서 수집하지 않는 긴 매개 변수 목록

// Long Parameter List Smell 
public void paint (Graphics gr, 
        double x, double y, double width, double height, 
        Boolean shouldValidate){.....} 

아래의 코드는 상기 냄새를 호출하는 호출 방법이다.

// Caller 
public void someMethod(......){ 
    double x = someMethod(); 
    double y = 200; 
    double width = 100; 
    double height = width/2; 
    paint(gr, x, y, width, height, true); 
} 

우리가 알 수있는 파라미터 이중 X, Y 더블 더블 폭과 직사각형 객체 같은 두 높이 사운드. 이 매개 변수는 개체에서 수집되지 않으므로 전체 개체 유지를 사용할 수 없습니다. 다음 옵션은 매개 변수 개체 소개입니다. 그러나 이미 Java 라이브러리의 클래스 인 Rectangle2D.Double 클래스가 있습니다.

이 매개 변수를 Rectangle2D.Double의 객체에 그룹화해야합니까? 리팩토링되는 코드는 아래와 같습니다. 이런 식으로 리팩토링하는 것이 괜찮 으면. 이러한 유형의 리팩토링은 무엇입니까?

// Long Parameter List Smell 
public void paint (Graphics gr, 
        Rectangle2D.Double rec 
        Boolean shouldValidate){.....} 


// Caller 
public void someMethod(......){ 
    double x = someMethod(); 
    double y = 200; 
    double width = 100; 
    double height = width/2;   
    paint(gr, 
      new Rectangle2D.Double(x, y, width, height), 
      true); 
} 

답변

0

방법에 대해 :

public void someMethod(......){ 
    Rectangle2D.Double rect = new Rectangle2D.Double(someMethod(), 200, 100, 50); 
    paint(gr, rect, true); 
} 

? 조금 다르지만 조금 더 읽기 쉽습니다.

용어에 대한 질문에 대답하려면 매개 변수 개체을 통합 하시겠습니까?