Program Tip

.NET 위임 유형에 대한 적절한 명명 규칙?

programtip 2020. 10. 18. 19:04
반응형

.NET 위임 유형에 대한 적절한 명명 규칙?


관례에 따라 클래스는 종종 명사, 동사와 같은 메서드 및 형용사와 같은 인터페이스와 같은 이름이 지정됩니다.

델리게이트에 대한 일반적인 명명 규칙은 무엇입니까? 또는 대리자가 유형 및 기타 항목에 나열 될 때 이름을 구별하는 좋은 방법은 무엇입니까?

내 즉각적인 가정은 단일 메서드 인터페이스가 종종 대리자로 대체 될 수 있기 때문에 대리자를 형용사 로 명명하는 것 입니다.

몇 가지 생각 :

delegate object ValueExtracting(object container);

delegate object ValueExtractor(object container);

delegate object ValueExtractionHandling(object container);

delegate object ValueExtractionHandler(object container);

개인적으로 몇 가지 다른 패턴을 사용합니다.

[Task][State]Handler- UITaskFinishedHandler

[Event]Handler- ControlLoadedHandler

[Function Name]Delegate- DoSomeWorkDelegate - 내가 다른 / 새 스레드에서 함수를 호출하기위한 대리자를 만들 필요가있을 때 사용

[Task]Callback- ContainerLoadedCallback - 제어 A는 작업 및 제어 (A)의 대부분이 제어 B에 대한 종속성을 통과 않는 제어 B 작업을 시작할 때 사용 (예 : ControlA를 채우기 위해 ControlB에 대한 UI 컨테이너를 통과하고 실제로 컨테이너를 보여 통지를 필요로했을 수 있습니다 )

다중 스레딩 또는 비동기 WCF 호출을 많이 사용하는 프로젝트가있는 경우 많은 대리자가 떠 다니게 될 수 있으므로 최소한 이해하기 쉬운 표준을 채택하는 것이 중요합니다.


Microsoft의 프레임 워크 디자인 지침 -저를위한 명명 책정 은 주제에 대해 다음과 같이 말합니다 .

√ 이벤트에 사용되는 델리게이트 이름에 접미사 "EventHandler"를 추가하세요.
√ 이벤트 핸들러로 사용되는 것 이외의 델리게이트 이름에 접미사 "콜백"을 추가하세요.
X 델리게이트에 접미사 "Delegate"를 추가하지 마십시오.


델리게이트는 작업 (동사)을 수행하는 것이므로 해당 작업을 수행하는 이름을 지정해야합니다. 가지고 Converter<TInput, TOutput>예를 들어. 동사는 Convert 입니다. 변환을 수행하는 것을 변환기 라고 하므로 대리자의 이름이됩니다.


이것은 몇 가지에 달려 있습니다.

대리자가 이벤트로 사용되는 경우 항상EventHandler 하위 유형 으로 참조 되어야 합니다. 예를 들면 다음과 같습니다.

public delegate void ValueExtractingEventHandler(object sender,
    ValueExtractingEventArgs e);

이벤트가 아닌 경우 MS 코딩 지침 (Google에서 올바른 사본을 찾을 수없는 것 같음) 은 특별한 경우를 제외하고 대리인 이름에 "delegate"또는 "handler"와 같은 단어 포함 하지 않도록 명시 적으로 권장 합니다. 유형.EventHandler

일반적으로, 참가자는 이름을 따서 명명되어야한다 행동 처럼 될 것이다, ValueExtracting(대리자 값이 추출되기 전에 발생하는 경우) 또는 ValueExtracted(추출 후).

Func<T1, T2, ..., TResult>대리인이 구문은 더 일반화되고 있지만 그것으로는 4 개 이상의 매개 변수가없는 한, 당신은 모두에서 자신의 선언 할 필요가 없습니다 - 그냥 한 기존의 사용 :

object ExtractObject(object source, Func<object, object> extractor);

이 구문은 대리자가 클로저 로 사용될 때 가장 좋습니다 . 델리게이트 자체에는 그다지 흥미로운 이름이 없지만 인수는 에이전트 명사 (추출기, 공급자, 평가자, 선택자 등)입니다.

대부분의 델리게이트 사용은 위의 범주 중 하나에 해당하므로 적절하게 선택하는 데 사용되는 것을 파악하십시오.


난 그냥 중 하나를 사용하는 대부분 때문에 나는 그것에 대해 생각하지 않았다 EventHandler<T>, Func<T>또는 Action<T>과부하를 내 자신을 정의 귀찮게하지 않습니다. 나는 아마 당신이 나열한 것들에서 ValueExtractor를 선택할 것입니다. 이것은 그것이 객체처럼 들리게 만들고 그것을 호출하면 그 객체를 사용하여 작업을 수행하게됩니다. 예를 들면 :

ValueExtractor extractor += Blah;
var value = extractor(data);

Additionally, most of the built-in delegates are named like nouns as well. When in doubt, follow the .NET framework.


I would go with ValueExtraction..
I've Never thought why, but I guess because you're storing an operation and it should be a noun.. strictly this is not an operation, I know...


Based on Enumerable.Sum, I'd pass the delegate as a Func<object, object> and name the parameter selector:

void Foo(Func<object, object> selector) ...

If you have to make your own delegate for it, I'd go with ValueExtractor since that's the most descriptive name for what it does.

참고URL : https://stackoverflow.com/questions/2346065/proper-naming-convention-for-a-net-delegate-type

반응형