매개변수 수가 같은 다중정의(오버로딩, Overloading)는 만들지 마라.

메서드의 다중정의

프로그래밍 언어가 다중정의를 허용한다고 해서 다중정의를 꼭 활용하란 뜻은 아니다. 그러나 다중정의가 혼동을 일으키는 상황이 종종 있다.

해결책

안전하고 보수적으로 코딩하려면 매개변수 수가 같은 다중정의는 만들지 말자. 이 규칙만 잘 따르면 어떤 다중정의 메서드가 호출될지 헷갈릴 일은 없을 것이다. 특별히 따르기 어려운 규칙은 아닐 것이다. 왜냐하면 다중정의하는 대신 메서드 이름을 다르게 지어주는 길도 항상 열려 있으니 말이다.

예를 들면, ObjectOutputStream 클래스를 살펴보자. writeBoolean(boolean), writeInt(int), writeLong(long)과 같은 식이다. 이 방식이 다중정의보다 나은 또 다른 점은 read 메서드의 이름과 짝을 맞추기 좋다는 것이다. 예를 들어 readBoolean(), readInt(), readLong() 같은 식이다.

생성자의 다중정의

생성자는 이름을 다르게 지을 수 없으니 두 번째 생성자부터는 무조건 다중정의가 된다.

해결책

  • 정적 팩토리 패턴을 활용할 수 있다면, 정적 팩토리 패턴을 사용해 생성자의 다중정의를 피해라.

References