我的方法名称应该比其语句更长吗?

时间:2013-06-22 09:55:42

标签: c# naming-conventions api-design

根据.NET框架的General Naming Conventions

  

X不要使用缩写或缩进作为标识符名称的一部分。

     

例如,使用GetWindow而不是GetWin。

     

X不要使用任何未被广泛接受的缩写词,即使它们是,只在必要时使用。

我曾经认为GetName可以用于我的方法,但我相信它不是那么有意义。

为了不偏离命名约定,我试图弄清楚被广泛接受的首字母缩略词,但我对以下方法的想法用完了:

String GetExplicitInterfaceMemberImplementationName(MemberInfo info) {
       return info.DeclaringType.Name+"."+info.Name; 
}

对于这种情况,它实际上并不比声明长,但只是相同的长度;应使用Type.Delimiter而不是"."。但是,命名问题经常困扰我。

那么,我应该声明什么方法名称?对于长期解决方案,我该怎么办?

还有一个问题,是否有一个开箱即用的API做同样的事情?


编辑1:

停下来思考,对我这么好的建议。

出于声明的目的,也是为了语义而不是破坏命名约定,我从[AddAttributeStoreCommand.TypeQualifiedName Property]得到了一个想法;所以我现在宣布它为:

public static String GetTypeQualifiedName(this MemberInfo info) {
    return info.DeclaringType.Name+"."+info.Name;
}

然而,长期的解决方案尚未出现......


编辑2:

我不确定这样的名字是否是一个好习惯。

public static String GetTypeDotItsName(this MemberInfo info) {
    return info.DeclaringType.Name+"."+info.Name;
}

2 个答案:

答案 0 :(得分:4)

代码完成第2版有关于方法名称长度的说法:

  

根据需要制作例程名称

     

研究表明,变量名的最佳平均长度为9到15个字符。例程往往比变量更复杂,而且它们的好名称往往更长。南安普顿大学的Michael Rees认为平均20到35个字符是一个很好的名义长度(Rees 1982)。平均长度为15到20个字符可能更加真实,但是恰好更长的清晰名称会很好。

注意平均值这个词。如果方法名称尽可能清楚,并且它是50个字符,那么无论如何。没关系。

但是,这本书确实提到了几段内容:

  

如果你有副作用的例程,你会有许多冗长,愚蠢的名字。治愈不是使用描述性较少的常规名称;治疗的目的是让你直接发生事情而不是副作用。

当然,副作用不是问题,但你可以扩展这个想法。问问自己“这个长长的,愚蠢的名字是否突然出现,因为我做的过于复杂?”如果你确定你需要一个ExplicitMemberInterfaceImplementationName,那么很好,但它至少可以停下来思考。

答案 1 :(得分:1)

1)输入使方法的目的明确所需的信息。您可以将示例名称的长度减半,而不必理解它的适用范围。

2)指南是准则。当他们变得适得其反时,不要盲目遵守规则。如果使用缩写使得更容易阅读和理解代码,请使用缩写。主要的是尝试将缩写限制为常用的长名称,并使用直观和常用的缩写,以便阅读代码的任何人都可以轻松地找出它们的含义。例如,decl是声明的通用缩写,很难将其他任何错误。

3)有时您可以避免使用同义词缩写。

我认为你可能会从你的名字中删除界面和成员而不会失去意义。 但也许“显式接口实现名称”实际上是“显式名称” - 显式具有明确定义的含义,尤其是在您的类的上下文中,并且您始终可以在文档注释中添加完全不透水的法律定义。所以:“GetExplicitName”