← Back to NOTES 🌰
← Effective JavaScript 🤿
← 아이템 54 - undefined를 '값이 없는' 것처럼 처리하라
핵심 요약
- 함수가 많은 인자를 필요로 할 때 옵션 객체 패턴을 사용하면 가독성과 유지보수성이 향상됨
- 옵션 객체는 각 인자를 자체적으로 문서화하고, 불리언 파라미터에 특히 유용함
- 모든 옵션 인자는 부가적(선택적)으로 처리되어야 함
- 필수 인자가 있다면 옵션 객체와 분리하여 유지하는 것이 좋음
- extend 유틸리티 함수를 사용하면 디폴트 값 처리를 깔끔하게 추상화 가능
자세한 내용
문제점: 인자가 많아지는 함수
시간이 흐르면서 라이브러리 기능이 확장됨에 따라 함수 시그니처가 더욱 많은 인자를 필요하게 되는 경우가 있다. 이런 경우 코드의 가독성이 크게 떨어진다.
옵션 객체의 장점
- 가독성 향상: 읽기 더 쉽고, 각 인자가 스스로 문서화됨
- 자체 문서화: 각 인자의 역할을 설명하기 위한 코멘트가 필요 없음. 프로퍼티 이름이 스스로를 설명함
- 불리언 파라미터에 유용:
true vs modal: true처럼 명확한 의미 전달
- 선택적 인자 지원: 어떤 인자도 부가적으로 적용 가능하고, 호출자는 부분 집합만 제공 가능
- 객체 전체 생략 가능: 모든 디폴트 값을 사용하려면 객체 전체를 생략 가능
필수 인자와 옵션 객체 분리
한두 개의 필수 인자가 필요하다면, 이들을 옵션 객체와 분리하여 유지하는 편이 더 좋다.