如果之前已经提出过这样的道歉,并且很难想象它没有,但它没有明显的关键字关联,因此很难检查。
如果我的C#类包含GetByCode(string code)
和GetByCodeAndResourceType(string code, string resourceType)
等标准方法,我应该将它们重命名为重载Get(...)
,因为它们可以通过参数列表区分?
显然,可能存在这样的情况:为了不同的目的可能需要相同的方法签名,但除了我不能看到需要单独的方法名称,只要有智能感知的评论。
我很想知道别人认为什么是利弊。
答案 0 :(得分:6)
如果它们都做同样的事情(或返回相同的值)但接受不同的输入,那么最好通过重载参数来区分它们。如果他们做什么或返回有什么不同,那么我会使用不同的名称。
命名差异的另一个原因可能是性能,或其他不明显的特征(例如,一个过载比另一个慢很多)。这可以在文档中详细说明,但提供不同的名称会引起更多关注。
答案 1 :(得分:3)
我们倾向于使用单词Find
而不是Get
,是的,我们在方法名称中使用参数名称。
正如您所指出的,有些情况下参数类型不提供唯一的签名。这就是我们选择长名称的原因,因为它是一致的。
答案 2 :(得分:3)
我认为应该通过签名来理解方法的作用。方法签名由其名称,返回类型及其参数组成。因此,重复名称中的任何这些组件(例如GetByName(string name)
或List<string> GetNames*List*(..)
)都是完全多余的。