2-1.과다매개변수 Long Parameter List

[ 2017-07.12 작성 ]

Symptoms

메서드에 대해 3개 또는 4개 이상의 매개변수를 가지고 있다.

Reasons for the Problem

  • 여러 개의 변수 유형이 단일 메서드에서 병합된 후에 매개 변수의 긴 목록이 발생할 수 있습니다
  • 실행될 알고리즘과 방법을 제어하기 위해 긴 목록이 작성되었을 수 있습니다
  • 과다매개변수는 클래스를 서로 독릭적으로 만들기 위한 노력의 부산물일 수도 있습니다.

Treatment

매개 변수 전달되는 값을 확인합니다. 인수 중 일부가 다른 객체의 메소드 호출 결과일 경우 매개 변수를 메소드 호출과 바꾸기를 사용합니다. 이 객체는 자체 클래스의 필드에 배치되거나 메서드 매개변수로 전달될 수 있습니다.

다른 개체에서 받은 데이터 그룹을 매개 변수로 전달하는 대신 Preserve Whole Object(개체전체유지)를 사용하여 메서드 자체에 개체를 전달합니다.

무관한 데이터 요소가 여러 개있는 경우 매개 변수 개체 Introduce Parameter Object(소개매개변수객체)를 통해 단일 매개 변수 개체로 병합할 수 있습니다.

과다매개변수를 객체의 일부로 생성자 또는 메서드에 전달되는 경우 소개매개변수객체로 알려진 리팩토링이 훌륭합니다.
이 리팩토링은 "자연스롭게 결합되는 매개 변수의 그룹화"로 설명 됩니다.

아래는 Introduce Parameter Object(소개매개변수객체)로 리팩토링하는 예제
https://www.javacodegeeks.com/2013/10/too-many-parameters-in-java-methods-part-2-parameters-object.html

theory(이론)

매개변수객체를 사용하여 메서드 또는 생성자에 대한 매개변수의 수를 줄일수 있습니다.
(너무 많은 매개변수를 새로운 Class로 분리하는 것)

빌더패턴을 사용하여 메소드 매개변수를 설계하는 방법
http://www.codejava.net/coding/how-to-use-builder-pattern-for-designing-method-parameters

Payoff

읽기 쉽고 짧은 코드
리팩토링은 이전에 주목받지 못한 중복코드를 나타낼 수 있습니다.