냄새 4. 긴 매개변수 목록

    들어가기 전

    이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 


    냄새 4. 긴 매개변수 목록 (Long Parameter List)

    • 어떤 함수에 매개변수가 많을수록 함수의 역할을 이해하기 어려워진다.
      • 과연 그 함수는 한 가지 일을 하고 있는게 맞는가?
      • 불필요한 매개변수는 없는가?
      • 하나의 레코드로 뭉칠 수 있는 매개변수 목록은 없는가?
    • 매개변수를 줄일 수 있는 방법
      • 어떤 매개변수를 다른 매개변수를 통해 알아낼 수 있다면, '매개변수를 질의 함수로 바꾸기'를 사용할 수 있다. 
      • 기존 자료구조에서 세부적인 데이터를 가져와서 여러 매개변수로 넘기는 대신, '객체 통째로 넘기기'를 사용할 수 있다.
      • 일부 매개변수들이 대부분 같이 넘겨진다면, '매개변수 객체 만들기'를 적용할 수 있다.
      • 매개변수가 플래그로 사용된다면, '플래그 인수 제거하기'를 사용할 수 있다. 
      • 여러 함수가 일부 매개변수를 공통적으로 사용한다면 '여러 함수를 클래스로 묶기'를 통해 매개변수를 해당 클래스의 필드로 만들고, 메서드에 전달해야 할 매개변수 목록을 줄일 수 있다. 

    매개변수가 많아지면 어떠한 문제점이 발생할까? 

    • 매개변수가 많아지고, 동일한 매개변수를 여러 메서드에서 받는 경우 메서드를 구별하기가 어려워진다. 
      • 예를 들어 A, B 메서드에서 받는 매개변수가 동일하다면 각 메서드를 구별하기 쉬울까? 
      • 함수의 역할을 구별하기가 어려워진다.

    특정 메서드에 매개변수가 많아진다는 이야기는 해당 함수가 여러 가지의 일을 동시에 진행하고 있는 상황일 수도 있다. 이 경우 매개변수를 적절히 쪼개서 함수를 적절히 쪼개도록 하는 것이 더 좋을 수 있다. 그렇게 하면 함수는 특정한 한 가지의 일만 할 수 있게 되기 때문이다.

    댓글

    Designed by JB FACTORY