문서
인자가 많은 메서드는 왜 나쁠까?
나재은 · 토스 · 토스 기술 블로그
소개
인자가 많은 메서드를 함께 리팩토링 하면서 코드 사용자 입장에서 코드 복잡성을 관리하는 방법을 알아봅니다.
AI 핵심 요약
메일 발송 메서드에 인자가 11개나 있어 호출자가 각 값의 의미와 조합을 알아야 했고, 사용하지 않는 기능에도 null을 전달해야 하는 문제가 있었습니다. 작성자는 도메인 지식을 확인한 뒤 함께 쓰이는 인자를 묶고, 관련 없는 기능은 설정 메서드로 분리했으며, 내부에서 정할 수 있는 값은 감춰 `send()`의 필수 인자를 수신자·제목·본문으로 줄였습니다. 그 결과 호출자는 필요한 기능만 명시적으로 설정하고 메일을 보낼 수 있게 됐습니다. 메서드의 복잡성은 구현뿐 아니라 사용하는 사람의 부담으로도 평가해야 하며, 공개 API를 동료가 쉽게 이해하고 사용할 수 있도록 설계하는 것이 중요하다는 교훈을 전합니다.
- 항상 함께 쓰이는 인자는 하나의 옵션 객체로 묶어 관계를 명확히 하세요.
- 기능 조합마다 별도 메서드를 만들면 조합 수만큼 API가 늘어날 수 있으니, 독립적인 설정 메서드로 분리하는 방법을 고려하세요.
- 기능을 켜는 메서드에는 이미 의도가 담겨 있으므로, 중복되는 Boolean 인자나 불필요한 값을 받지 않도록 하세요.
- 랜덤 ID나 기본 파라미터처럼 내부에서 결정할 수 있는 값은 호출자에게 요구하지 말고 구현 안에서 처리하세요.
- 공개 메서드와 인자 이름만으로 사용법을 유추할 수 있는지 코드 사용자 관점에서 점검하세요.