2011-05-30 92 views
6

如果以前有人问过,并且很难想象它没有,但是它没有明显的关键字关联,所以很难检查。'Get'方法名称应该包含参数的名称吗?

如果我有像GetByCode(string code)GetByCodeAndResourceType(string code, string resourceType)几个标准方法C#类,我应该只是将其重命名为一个重载Get(...),因为它们是由参数列表区分?

很明显,可能会出现不同目的需要使用同一个方法签名的情况,但除了我不能看到需要单独的方法名称的情况外,只要智能感知有适当的注释。

我很想知道任何人认为是利弊。

回答

6

如果它们都做同样的事情(或返回相同的值)但接受不同的输入,那么通过重载参数来区分这些输入会更好。如果他们做了什么或返回有什么不同,那么我会使用不同的名字。

命名上的差异的另一个原因可能是性能,或另一个不明显的特征(例如,一个重载比另一个重载慢得多)。这可以在文档中详细说明,但提供不同的名称会引起更多关注。

3

我们倾向于使用单词Find而不是Get,而且我们使用方法名称中的参数名称。

正如您指出的那样,会出现这样的情况,即参数类型不提供唯一签名。这就是为什么我们选择长名称是因为它是一致的。

+1

+1是的,一致性很重要 – 2011-05-30 01:54:14

3

我觉得应该明白一种方法的特征。方法签名由其名称,返回类型及其参数组成。因此,重复名称中的任何这些组件(例如,GetByName(string name)List<string> GetNames*List*(..))是完全多余的。

相关问题