Skip to content

Latest commit

 

History

History
20 lines (14 loc) · 1.72 KB

11.5 매개변수를 질의 함수로 바꾸기.md

File metadata and controls

20 lines (14 loc) · 1.72 KB

매개변수를 질의 함수로 바꾸기

##주로 행해지는 상황은 다른 리팩터링을 수행한 후 특정 매개변수가 더는 필요 없을때이다.

  • 피호출 함수가 스스로 ‘쉽게’ 결정할 수 있는 값을 매개변수로 건네는 것도 일종의 중복

    • 이런 함수를 호출할 때 매개변수의 값은 호출자가 정하게 되는데, 이 결정은 사실 하지 않아도 되었을 일이니 의미 없이 코드만 복잡해질 뿐이다.
  • 매개변수가 있다면 값을 결정하는 주체가 호출자가 되고 매개변수가 없다면 피호출 함수가 된다.

    • 작가는 습관적으로 호출하는 쪽을 간소하게 만드는 편. 즉, 책임 소재를 피호출 함수로 옮긴다는 뜻인데 물론 피호출 함수가 그 역할을 수행하기에 적합할 때만 그렇게 함.
  • 매개변수를 제거하면 피호출 함수에 원치 않는 의존성이 생길 때는 질의 함수로 바꿔선 안된다.

    • 해당 함수가 알지 못했으면 하는 프로그램 요소에 접근해야 하는 상황을 만들 때임.
      • 주로 함수 본문에서 문제의 외부 함수를 호출해야 하거나 나중에 함수 밖으로 빼내길 원하는 수용 객체에 담긴 데이터를 사용해야 할 때 일어난다.

절차

  1. 필요하다면 대상 매개변수의 값을 계산하는 코드를 별도 함수로 추출해놓는다.
  2. 함수 본문에서 대상 매개변수로의 참조를 모두 찾아서 그 매개변수의 값을 만들어주는 표현식을 참조 하도록 바꾼다. 하나 수정할 때마다 테스트한다.
  3. 함수 선언 바꾸기로 대상 매개변수를 없앤다...