首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.NET委托类型的正确命名约定?

.NET委托类型的正确命名约定?
EN

Stack Overflow用户
提问于 2010-02-27 11:00:29
回答 5查看 35.5K关注 0票数 89

按照惯例,类通常被命名为名词,方法被命名为动词,接口被命名为形容词。

委派的通用命名约定是什么?或者,当在类型和其他事物中列出委托时,如何区分其名称?

我的直接假设是将委托命名为形容词,因为通常可以将单个方法接口替换为委托。

一些想法:

代码语言:javascript
复制
delegate object ValueExtracting(object container);

delegate object ValueExtractor(object container);

delegate object ValueExtractionHandling(object container);

delegate object ValueExtractionHandler(object container);
EN

回答 5

Stack Overflow用户

发布于 2010-02-27 11:34:32

这取决于几件事。

如果要将委托用作事件,则应始终将其引用为EventHandler子类型,例如:

代码语言:javascript
复制
public delegate void ValueExtractingEventHandler(object sender,
    ValueExtractingEventArgs e);

如果它不是一个事件,那么MS编码指南(我在谷歌上似乎永远找不到正确的副本)明确建议不要在委托名称中包含像“委托”或“处理程序”这样的词,除非是在特殊情况下的EventHandler类型。

通常,代理应该以操作命名,类似于ValueExtracting (如果代理发生在提取值之前)或ValueExtracted (在提取之后)。

Func<T1, T2, ..., TResult>委托语法也变得越来越常见,但除非你有4个或更多的参数进入其中,否则你根本不需要声明你自己的-只需使用现有的:

代码语言:javascript
复制
object ExtractObject(object source, Func<object, object> extractor);

当委托用作闭包时,这种语法是最好的。委托本身没有一个非常有趣的名称,但参数是一个代理名词(提取器、提供者、计算器、选择器等)。

大多数委托用法都属于上述类别中的一种,因此请找出它用于哪种类别,并进行适当的选择。

票数 6
EN

Stack Overflow用户

发布于 2010-02-27 11:04:02

我从来没有想过这一点,主要是因为我只使用了EventHandler<T>Func<T>Action<T>重载中的一个,而从不费心定义自己的重载。我可能会从你列出的列表中选择ValueExtractor。这使得它听起来更像一个对象,当您调用它时,您将使用该对象来执行某个操作。例如:

代码语言:javascript
复制
ValueExtractor extractor += Blah;
var value = extractor(data);

此外,大多数内置委托的命名方式也类似于名词。如果有疑问,请遵循.NET框架。

票数 3
EN

Stack Overflow用户

发布于 2010-02-27 11:14:20

我会选择ValueExtraction..

我从来没有想过为什么,但我猜是因为你在存储一个操作,它应该是一个名词..严格来说这不是一个行动我知道..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2346065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档