[Refactoring] # 매개변수와 쿼리

mechaniccoder·2021년 11월 30일
0
post-thumbnail

이번 시간에는 함수의 매개변수와 쿼리에 대해서 알아보겠습니다.

리팩토링 2판 책을 공부하며, 아래의 2가지 기법에 대해서 알게됐습니다.

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

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

코드를 보다보면, 함수에 여러 개의 매개변수들이 있는 것을 보셨을 겁니다.

그러나 자세히 보다 보면, 어떤 매개변수는 다른 매개변수를 활용해서 얻는 것이 가능합니다. 이럴 경우는 매개변수를 제거합니다.

다른 경우로는, 외부 함수나 변수에서 가져오는 경우가 있는데요. 만약 함수 내부에서 이를 활용하는 경우 의존성이 추가로 생깁니다. 위에서 설명한 매개변수로부터 얻는 경우는 자신감있게 바꿔도 되지만 말이죠.

하지만 추가적으로 염두해야 할 점은 참조 투명해야한다는 것인데요. 쉽게 말해서 순수함수이냐 아니냐를 주의해서 봐야한다는 것입니다.

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

매개변수 질의함수로 바꾸기, 리팩토링과 반대되는 기법입니다. 위의 방식으로 리팩토링을 했다면, 질의 함수 내부에 의존성이 있을 수 있습니다.(외부함수, 전역변수등을 사용하고 있다면...)

이 의존성을 다루기 위해 매개변수로 추출해서, 호출자에서 이를 다루도록 하는 리팩토링 기법입니다.

필자는 여기서 한가지 충고를 합니다. 의존성을 처리하는 책임을 함수에서 호출자로 이동시켰기 때문에 호출자의 코드가 복잡해진다는 점입니다.

정답은 없기 때문에 두가지 리팩토링을 잘 알아두고 적절한 상황에 대해 사용할 수 있도록 하는 것이 좋을 것 같습니다.

profile
세계 최고 수준을 향해 달려가는 개발자입니다.

0개의 댓글