按照惯例,类通常被命名为名词,方法被命名为动词,接口被命名为形容词。
委派的通用命名约定是什么?或者,当在类型和其他事物中列出委托时,如何区分其名称?
我的直接假设是将委托命名为形容词,因为通常可以将单个方法接口替换为委托。
一些想法:
delegate object ValueExtracting(object container);
delegate object ValueExtractor(object container);
delegate object ValueExtractionHandling(object container);
delegate object ValueExtractionHandler(object container);
发布于 2010-02-27 11:34:32
这取决于几件事。
如果要将委托用作事件,则应始终将其引用为EventHandler
子类型,例如:
public delegate void ValueExtractingEventHandler(object sender,
ValueExtractingEventArgs e);
如果它不是一个事件,那么MS编码指南(我在谷歌上似乎永远找不到正确的副本)明确建议不要在委托名称中包含像“委托”或“处理程序”这样的词,除非是在特殊情况下的EventHandler
类型。
通常,代理应该以操作命名,类似于ValueExtracting
(如果代理发生在提取值之前)或ValueExtracted
(在提取之后)。
Func<T1, T2, ..., TResult>
委托语法也变得越来越常见,但除非你有4个或更多的参数进入其中,否则你根本不需要声明你自己的-只需使用现有的:
object ExtractObject(object source, Func<object, object> extractor);
当委托用作闭包时,这种语法是最好的。委托本身没有一个非常有趣的名称,但参数是一个代理名词(提取器、提供者、计算器、选择器等)。
大多数委托用法都属于上述类别中的一种,因此请找出它用于哪种类别,并进行适当的选择。
发布于 2010-02-27 11:04:02
我从来没有想过这一点,主要是因为我只使用了EventHandler<T>
、Func<T>
或Action<T>
重载中的一个,而从不费心定义自己的重载。我可能会从你列出的列表中选择ValueExtractor。这使得它听起来更像一个对象,当您调用它时,您将使用该对象来执行某个操作。例如:
ValueExtractor extractor += Blah;
var value = extractor(data);
此外,大多数内置委托的命名方式也类似于名词。如果有疑问,请遵循.NET框架。
发布于 2010-02-27 11:14:20
我会选择ValueExtraction..
我从来没有想过为什么,但我猜是因为你在存储一个操作,它应该是一个名词..严格来说这不是一个行动我知道..。
https://stackoverflow.com/questions/2346065
复制相似问题