← Back to NOTES 🌰 ← Effective JavaScript 🤿

← 아이템 58 - 배열과 유사 객체를 구별하라

핵심 요약

자세한 내용

문제: 오버로딩과 강제 형변환의 혼용

라이브러리와 API 설계 시 과도한 강제 형변환을 피해야 한다. 오버로딩 메서드 작성 시 강제 형변환을 사용하면 안 되는 이유는 타입 구별이 불가능해지기 때문이다.

BitVector 클래스 예제

하나의 인자로 bit 값의 '숫자' 또는 '배열(과 유사 배열)'을 받아 그 타입에 맞는 처리를 수행하는 enable 메서드를 가진 클래스.

오버로딩된 함수의 동작을 결정하기 위해 인자의 타입을 확인한다면, 인자를 강제 형변환하지 않는 것이 현명하다.

방어적인 코드 작성

수행되지 않을 뿐더러, 어떤 가변 인자를 사용하는지도 결국 알아내기 어렵게 만든다. 숫자와 객체만을 받아들이도록 강제하는 더 신중하고 방어적인 버전을 작성할 수 있다.

Guard 유틸리티 패턴

함수 시그니처를 더 간결하게 방어하기 위한 유틸리티 함수 버전을 만들 수 있다.

장점