根据.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;
}
答案 0 :(得分:4)
代码完成第2版有关于方法名称长度的说法:
根据需要制作例程名称
研究表明,变量名的最佳平均长度为9到15个字符。例程往往比变量更复杂,而且它们的好名称往往更长。南安普顿大学的Michael Rees认为平均20到35个字符是一个很好的名义长度(Rees 1982)。平均长度为15到20个字符可能更加真实,但是恰好更长的清晰名称会很好。
注意平均值这个词。如果方法名称尽可能清楚,并且它是50个字符,那么无论如何。没关系。
但是,这本书确实提到了几段内容:
如果你有副作用的例程,你会有许多冗长,愚蠢的名字。治愈不是使用描述性较少的常规名称;治疗的目的是让你直接发生事情而不是副作用。
当然,副作用不是问题,但你可以扩展这个想法。问问自己“这个长长的,愚蠢的名字是否突然出现,因为我做的过于复杂?”如果你确定你需要一个ExplicitMemberInterfaceImplementationName,那么很好,但它至少可以停下来思考。
答案 1 :(得分:1)
1)输入使方法的目的明确所需的信息。您可以将示例名称的长度减半,而不必理解它的适用范围。
2)指南是准则。当他们变得适得其反时,不要盲目遵守规则。如果使用缩写使得更容易阅读和理解代码,请使用缩写。主要的是尝试将缩写限制为常用的长名称,并使用直观和常用的缩写,以便阅读代码的任何人都可以轻松地找出它们的含义。例如,decl是声明的通用缩写,很难将其他任何错误。
3)有时您可以避免使用同义词缩写。
我认为你可能会从你的名字中删除界面和成员而不会失去意义。 但也许“显式接口实现名称”实际上是“显式名称” - 显式具有明确定义的含义,尤其是在您的类的上下文中,并且您始终可以在文档注释中添加完全不透水的法律定义。所以:“GetExplicitName”