것은 나는 다음과 같은 기능을 제공하는 임의의 프로그래밍 언어가 상상 :함수/메소드 오버로드가 코드 냄새 인 경우, 어리석은 메소드 이름을 피하려면 어떻게해야합니까?
string joinString(list<object> itemsToBeJoined, string separator) ...
지금 나는 또한 문자열을 만들 값의 집합에 가입 할 수있는 또 다른 방법을 추가 할을,하지만 난 콜백 기능을 제공 할 이는 toString()을 사용하는 대신 값을 형식화 할 때마다 호출됩니다.
string joinString(list<object> itemsToBeJoined, function(object) callback, string separator) ...
이것은 많은 코드 냄새로 간주되는 함수 이름 오버로딩과 관련이 있습니다. 그래서 나는 대신 다음과 같이 선언 할 수 있습니다 :
string joinStringUsingCallback(list<object> itemsToBeJoined, function(object) callback, string separator) ...
이것은 과부하를 피하기 위해 성가신 이름으로 보입니다.
과부하를 피하기 위해 과부하와 거추장스러운 이름을 피할 수있는 세 번째 대안이 있습니까?
"많은 사람들이 코드 냄새로 간주합니다"- 유능한 사람들은 그렇지 않습니다. 함수 이름 오버로딩은 매우 합법적 인 ad hoc 다형성입니다. 나쁜 냄새는 남용에서 비롯됩니다. –
유능한 사람들이 그것을 코드 냄새로 보지 않는다면, 그 사람은 무능력하다는 것을 의미합니까? –
기본 설정 작업에 대한 도움을 요청하십니까? 함수 오버로딩을 코드 냄새라고 생각하는 유능한 사람들은 비어 있습니다. 코드 냄새라고 생각하는 모든 사람들이 어떤 멤버를 가지고 있는지 분명하지 않습니다 ... "많은"멤버가 있다고 생각할 이유가 없습니다. 그러나 어떤 구성원이든 코드 냄새라는 주장을 정당화하고 코드 냄새 *가 무엇인지에 대한 이해를 보여줄 필요가 있습니다 ... 그렇지 않으면 불가능한 형태입니다. 그러나 그것은 당신에게 무엇입니까? "많은 것"에 의하여 너 자신을 의미하지 않으면, 의견에 과도한 무게를 추가하기 위하여 곱해. –