'Get'方法名称应该包含参数的名称吗?
问题描述:
如果以前有人问过,并且很难想象它没有,但是它没有明显的关键字关联,所以很难检查。'Get'方法名称应该包含参数的名称吗?
如果我有像GetByCode(string code)
和GetByCodeAndResourceType(string code, string resourceType)
几个标准方法C#类,我应该只是将其重命名为一个重载Get(...)
,因为它们是由参数列表区分?
很明显,可能会出现不同目的需要使用同一个方法签名的情况,但除了我不能看到需要单独的方法名称的情况外,只要智能感知有适当的注释。
我很想知道任何人认为是利弊。
答
如果它们都做同样的事情(或返回相同的值)但接受不同的输入,那么通过重载参数来区分这些输入会更好。如果他们做了什么或返回有什么不同,那么我会使用不同的名字。
命名上的差异的另一个原因可能是性能,或另一个不明显的特征(例如,一个重载比另一个重载慢得多)。这可以在文档中详细说明,但提供不同的名称会引起更多关注。
答
我们倾向于使用单词Find
而不是Get
,而且我们使用方法名称中的参数名称。
正如您指出的那样,会出现这样的情况,即参数类型不提供唯一签名。这就是为什么我们选择长名称是因为它是一致的。
答
我觉得应该明白一种方法的特征。方法签名由其名称,返回类型及其参数组成。因此,重复名称中的任何这些组件(例如,GetByName(string name)
或List<string> GetNames*List*(..)
)是完全多余的。
+1是的,一致性很重要 – 2011-05-30 01:54:14