더북(TheBook)

addInt()는 두 Int를 인자로 받고 Int를 내놓지만, addDouble()은 두 Double을 받아서 Double을 반환한다. 오버로딩이 없다면 이런 연산을 한꺼번에 add()로 부를 수 없으므로, 일반적으로 프로그래머는 함수의 역할이나 함수가 대상을 처리하는 방법을 조합해서 유일한 이름을 만들어낸다(또는 임의의 문자를 덧붙여서 이름을 서로 다르게 만들 수도 있지만, 파라미터 타입 등 의미가 있는 정보를 사용해 이름을 짓는 게 전형적인 패턴이다). 반면 add()를 오버로딩하면 훨씬 더 코드가 깔끔하다.

언어가 오버로딩을 지원하지 않는다는 것이 큰 단점은 아니지만, 오버로딩이 있으면 가치가 있는 단순성을 얻을 수 있으므로 더 읽기 좋은 코드를 작성할 수 있게 된다. 오버로딩을 사용하면 함수 자체에 대해 설명하는 이름을 써서 추상화 수준을 높이고, 독자의 정신적인 부담을 줄일 수 있다. 또한, 불필요한 중복을 줄여주기도 한다. addInt()addDouble()이라는 이름은 근본적으로는 함수 파라미터에 있는 정보를 함수 이름에 반복하는 것일 뿐이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.