“Get”方法名称是否应包含参数名称?

时间:2011-05-30 01:36:51

标签: c# object

如果之前已经提出过这样的道歉,并且很难想象它没有,但它没有明显的关键字关联,因此很难检查。

如果我的C#类包含GetByCode(string code)GetByCodeAndResourceType(string code, string resourceType)等标准方法,我应该将它们重命名为重载Get(...),因为它们可以通过参数列表区分?

显然,可能存在这样的情况:为了不同的目的可能需要相同的方法签名,但除了我不能看到需要单独的方法名称,只要有智能感知的评论。

我很想知道别人认为什么是利弊。

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

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

正如您所指出的,有些情况下参数类型不提供唯一的签名。这就是我们选择长名称的原因,因为它是一致的。

答案 2 :(得分:3)

我认为应该通过签名来理解方法的作用。方法签名由其名称,返回类型及其参数组成。因此,重复名称中的任何这些组件(例如GetByName(string name)List<string> GetNames*List*(..))都是完全多余的。