.NET方法命名:何时使用XXXFor以及何时使用GetXXX

时间:2014-07-08 02:23:26

标签: c# naming-conventions

使用asp.net mvc时,我们会发现有许多方法以" For"后缀,例如Html.EditorFor(...)Html.TextBoxFor(...)等。这些名称非常直观,我喜欢它们。

我的问题是,何时使用GetXXX(...)以及何时使用XXXFor(...)?似乎即使在同一框架中,这种方法的命名仍然不一致。有时使用GetXXX(...),有时使用XXXFor(...)。这有什么命名原则吗?

顺便说一句

我很好奇这是因为我正在写一个名为EntityKey的课程。我想在这个类中放两个静态方法。它们是EntityKey.Get(object entity)EntityKey.GetKeyProperties(Type entityType)。但我正在考虑将Get方法重命名为For,所以EntityKey.For(object entity)。如果我将Get重命名为For,我认为将GetKeyProperties重命名为KeyPropertiesFor会更好。你觉得怎么样?

2 个答案:

答案 0 :(得分:2)

我认为“流畅”类型的语法旨在使事情更具可读性,因此您最想要问的问题是哪种语法最能传达您的代码所做的事情。

此外,如果您只是从实体类中检索数据,则可以考虑使用扩展方法。

public static int GetKey(this object entity)
{
    ....
}

然后你可以简单地调用

someEntity.GetKey();

然后,您可以更进一步,让所有实体都从公共接口继承,并将扩展方法更改为:

public static int GetKey(this IEntity entity)
{
   ...
}

我可能误解了您正在检索的内容,但如果它是某种特定对象的某种数据或元数据,那么在作为数据源的对象上调用方法通常会让我更清楚。< / p>

答案 1 :(得分:1)

在MVC中,xxxFor方法不仅仅是命名约定。该后缀表示该方法对模型的属性进行操作。

Html.TextBoxFor(m => m.FirstName);

VS

Html.TextBox("FirstName", @Model.FirstName);

另请注意,这些不是&#34; C#Methods&#34;。这些是.NET方法,是ASP.NET MVC的一部分。如果使用VB.NET,它们的名称完全相同。