문제

vb.net에서 사용하는 것이 좋습니다 : 기능 과부하 또는 기본 매개 변수는?

도움이 되었습니까?

해결책

코드가 다른 언어로 사용됩니까? 그렇다면 Hamish의 대답을 염두에두고 여전히 과부하로 균형을 바꿉니다. 특히 C#은 선택적 매개 변수를 지원하지 않습니다.

물론 이것은 실제로 C#에서 코드를 사용하는 사람을 막을 수는 없으며, 단지 고통 일 수 있습니다.

매개 변수가 많고 논리적으로 무언가를 나타내는 경우와 같은 방식으로 함께 캡슐화하는 것을 고려할 수 있습니다. Process 와 일하다 ProcessStartInfo. 객체 초기화기로 인해 C#에서 특히 좋습니다.

이것이 건설을위한 것이라면, 빌더 패턴을 이것의 변형으로 간주 할 수도 있습니다. 예를 들어 프로토콜 버퍼에서 다음과 같은 작업을 수행 할 수 있습니다.

Person jon = new Person.Builder { Name="Jon", Age=32,
                                  Spouse="Holly", Kids=3 }.Build();

결국 한 번에 사람을 만들면서 (한 가지 표현으로, 사람 자체를 돌연변이 할 필요없이, 실제로 메시지 유형은 불변 할 수 없으며, 그렇지 않은 건축업자 일뿐입니다).

다른 팁

매개 변수가 선택적 인 경우 (예 : 오버로드는 전체 프로 시그니처가 수락하는 매개 변수의 하위 집합입니다) 기본값 또는 선택적 매개 변수는 더 적합합니다.

오버로드가 매개 변수에 대해 다른 유형을 허용하거나 일상에 의해 다르게 해석 될 의미 적으로 다른 매개 변수 인 경우 과부하가 더 의미가 있습니다.

참고로

다른 어셈블리에서 호출되는 함수 또는 메소드에 매개 변수를 추가하려면 :

추가 매개 변수로 추가 기능을 작성하여 과부하 할 수 있습니다.

또는 선택적 매개 변수를 추가 할 수는 있지만 : 새로운 옵션 매개 변수를 사용할 필요가 없더라도이 기능을 호출하는 모든 어셈블리를 다시 컴파일해야합니다! 이것은 일반적으로 사람들이 기대하는 것이 아닙니다 (특히 VB6의 작동 방식에 사용 된 것). 기본적으로 새로운 선택적 매개 변수를 함수에 미끄러 뜨릴 수 없으며 완전히 뒤로 호환 될 것으로 기대합니다. 또한, 내가 이해할 수 있듯이, 기본값이 무엇인지 변경하면 작업 변경을 위해 모든 전화 어셈블리를 재건해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top