C# .NET方法命名:何时使用xxx或何时使用GetXXX
在使用asp.net mvc时,我们会看到有很多方法都以“For”后缀命名,例如C# .NET方法命名:何时使用xxx或何时使用GetXXX,c#,naming-conventions,C#,Naming Conventions,在使用asp.net mvc时,我们会看到有很多方法都以“For”后缀命名,例如Html.EditorFor(…),Html.TextBoxFor(…)等。这些名称非常直观,我很喜欢 我的问题是,何时使用GetXXX(…),何时使用xxx(…)?似乎即使在同一个框架中,这些方法的命名仍然不一致。有时使用GetXXX(…),有时使用xxx或(…)。这有什么命名原则吗 顺便说一句: 我对此很好奇,因为我正在编写一个名为EntityKey的类。我想在这个类中放置两个静态方法。它们是EntityKey.
Html.EditorFor(…)
,Html.TextBoxFor(…)
等。这些名称非常直观,我很喜欢
我的问题是,何时使用GetXXX(…)
,何时使用xxx(…)
?似乎即使在同一个框架中,这些方法的命名仍然不一致。有时使用GetXXX(…)
,有时使用xxx或(…)
。这有什么命名原则吗
顺便说一句:
我对此很好奇,因为我正在编写一个名为EntityKey
的类。我想在这个类中放置两个静态方法。它们是EntityKey.Get(对象实体)
和EntityKey.GetKeyProperties(类型entityType)
。但是我正在考虑将Get
方法重命名为For
,因此EntityKey.For(object entity)
。如果我将Get
重命名为For
,我认为最好也将GetKeyProperties
重命名为KeyPropertiesFor
。你觉得怎么样?我认为“流畅”类型的语法是为了让事情更具可读性,所以你最想问自己的是哪种语法最能传达你的代码在做什么
此外,如果您只是从实体类中检索数据,您可能会考虑使用扩展方法。
public static int GetKey(this object entity)
{
....
}
然后你就可以打电话了
someEntity.GetKey();
然后,您可以更进一步,让您的所有实体从公共接口继承,并将扩展方法更改为类似以下内容:
public static int GetKey(this IEntity entity)
{
...
}
我可能误解了您正在检索的内容,但如果是关于某个特定对象的某种数据或元数据,调用该对象上的方法(即数据源)通常对我来说更清晰。我认为“流畅”类型的语法旨在使内容更具可读性,因此,您要问自己的最大问题是,哪种语法最能传达您的代码所做的事情
此外,如果您只是从实体类中检索数据,您可能会考虑使用扩展方法。
public static int GetKey(this object entity)
{
....
}
然后你就可以打电话了
someEntity.GetKey();
然后,您可以更进一步,让您的所有实体从公共接口继承,并将扩展方法更改为类似以下内容:
public static int GetKey(this IEntity entity)
{
...
}
我可能误解了您正在检索的内容,但如果是关于某个特定对象的某种数据或元数据,调用该对象上的方法(即数据源)通常对我来说更清晰。我认为“流畅”类型的语法旨在使内容更具可读性,因此,您要问自己的最大问题是,哪种语法最能传达您的代码所做的事情
此外,如果您只是从实体类中检索数据,您可能会考虑使用扩展方法。
public static int GetKey(this object entity)
{
....
}
然后你就可以打电话了
someEntity.GetKey();
然后,您可以更进一步,让您的所有实体从公共接口继承,并将扩展方法更改为类似以下内容:
public static int GetKey(this IEntity entity)
{
...
}
我可能误解了您正在检索的内容,但如果是关于某个特定对象的某种数据或元数据,调用该对象上的方法(即数据源)通常对我来说更清晰。我认为“流畅”类型的语法旨在使内容更具可读性,因此,您要问自己的最大问题是,哪种语法最能传达您的代码所做的事情
此外,如果您只是从实体类中检索数据,您可能会考虑使用扩展方法。
public static int GetKey(this object entity)
{
....
}
然后你就可以打电话了
someEntity.GetKey();
然后,您可以更进一步,让您的所有实体从公共接口继承,并将扩展方法更改为类似以下内容:
public static int GetKey(this IEntity entity)
{
...
}
我可能误解了您正在检索的内容,但是如果是关于某个特定对象的某种数据或元数据,调用作为数据源的对象上的方法通常对我来说更清楚。在MVC中,
xxxFor
方法不仅仅是一种命名约定。该后缀表示该方法对模型的属性进行操作
Html.TextBoxFor(m => m.FirstName);
vs
还要注意的是,这些不是“C#方法”。这些是.NET方法,是ASP.NET MVC的一部分。如果您使用VB.NET,它们的名称将完全相同。在MVC中,方法的
xxx不仅仅是一种命名约定。该后缀表示该方法对模型的属性进行操作
Html.TextBoxFor(m => m.FirstName);
vs
还要注意的是,这些不是“C#方法”。这些是.NET方法,是ASP.NET MVC的一部分。如果您使用VB.NET,它们的名称将完全相同。在MVC中,
方法的xxx不仅仅是一种命名约定。该后缀表示该方法对模型的属性进行操作
Html.TextBoxFor(m => m.FirstName);
vs
还要注意的是,这些不是“C#方法”。这些是.NET方法,是ASP.NET MVC的一部分。如果您使用VB.NET,它们的名称将完全相同。在MVC中,
方法的xxx不仅仅是一种命名约定。该后缀表示该方法对模型的属性进行操作
Html.TextBoxFor(m => m.FirstName);
vs
还要注意的是,这些不是“C#方法”。这些是.NET方法,是ASP.NET MVC的一部分。如果您使用VB.NET,它们的名称完全相同。此问题取决于语言,请指定标记符号。我添加了语言标签。我想建议的标签会自动添加,我的坏:(编码风格的问题通常完全基于意见…查看现有资源,如和,以某种方式影响您的意见。GetEditor
和GetTextBox
比EditorFor
和TextBoxFor
更有意义吗?我不认为这些只是惯例。它们对功能没有影响问题是否取决于语言,请指定标记符号。我添加了语言