vb.net의 기능 과부하 대 기본 매개 변수?
-
08-07-2019 - |
문제
vb.net에서 사용하는 것이 좋습니다 : 기능 과부하 또는 기본 매개 변수는?
해결책
코드가 다른 언어로 사용됩니까? 그렇다면 Hamish의 대답을 염두에두고 여전히 과부하로 균형을 바꿉니다. 특히 C#은 선택적 매개 변수를 지원하지 않습니다.
물론 이것은 실제로 C#에서 코드를 사용하는 사람을 막을 수는 없으며, 단지 고통 일 수 있습니다.
매개 변수가 많고 논리적으로 무언가를 나타내는 경우와 같은 방식으로 함께 캡슐화하는 것을 고려할 수 있습니다. Process
와 일하다 ProcessStartInfo
. 객체 초기화기로 인해 C#에서 특히 좋습니다.
이것이 건설을위한 것이라면, 빌더 패턴을 이것의 변형으로 간주 할 수도 있습니다. 예를 들어 프로토콜 버퍼에서 다음과 같은 작업을 수행 할 수 있습니다.
Person jon = new Person.Builder { Name="Jon", Age=32,
Spouse="Holly", Kids=3 }.Build();
결국 한 번에 사람을 만들면서 (한 가지 표현으로, 사람 자체를 돌연변이 할 필요없이, 실제로 메시지 유형은 불변 할 수 없으며, 그렇지 않은 건축업자 일뿐입니다).
다른 팁
매개 변수가 선택적 인 경우 (예 : 오버로드는 전체 프로 시그니처가 수락하는 매개 변수의 하위 집합입니다) 기본값 또는 선택적 매개 변수는 더 적합합니다.
오버로드가 매개 변수에 대해 다른 유형을 허용하거나 일상에 의해 다르게 해석 될 의미 적으로 다른 매개 변수 인 경우 과부하가 더 의미가 있습니다.
참고로
다른 어셈블리에서 호출되는 함수 또는 메소드에 매개 변수를 추가하려면 :
추가 매개 변수로 추가 기능을 작성하여 과부하 할 수 있습니다.
또는 선택적 매개 변수를 추가 할 수는 있지만 : 새로운 옵션 매개 변수를 사용할 필요가 없더라도이 기능을 호출하는 모든 어셈블리를 다시 컴파일해야합니다! 이것은 일반적으로 사람들이 기대하는 것이 아닙니다 (특히 VB6의 작동 방식에 사용 된 것). 기본적으로 새로운 선택적 매개 변수를 함수에 미끄러 뜨릴 수 없으며 완전히 뒤로 호환 될 것으로 기대합니다. 또한, 내가 이해할 수 있듯이, 기본값이 무엇인지 변경하면 작업 변경을 위해 모든 전화 어셈블리를 재건해야합니다.