我在公司最近发现了一份审计报告,其中包含我们维护的代码,该报告表明我们不应该在GetSearchResults或GetXyzInformation中使用Get方法(非属性)命名.我查阅了MS指南(http://msdn.microsoft.com/en-us/library/4df752aw(VS.71).aspx)以获取方法命名,并且根据允许获取,所以您对此有何看法? ,从标准的角度来看,我们能否拥有它,如果不是为什么?
附加信息
我在第一组答案之后添加更多信息,我所指的方法是涉及数据库交互的类型,因此显然属性不是理想选项.
是的,他们当然可以 - 标准API中有很多例子(例如Delegate.GetInvocationList).
但是,通常在创建GetFoo方法时是否真的需要考虑属性是值得考虑的.
你可以这样做,是的,但它通常强烈表明你应该真正创建一个属性(特别是如果你的方法没有参数).
从框架设计指南:
不要具有与"获取方法"名称匹配的属性,如以下示例所示:
public string TextWriter { get {...} set {...}} public string GetTextWriter(int value) {...}
它是完全合法的(编写"get_Foo"形式的方法甚至是合法的,如果要使用getter声明属性Foo,它将与编译器合成的get方法冲突).
至于是否这是一个很好的事情:
如果该方法做了严肃的工作,有副作用或可能抛出异常,可能它不是一个好的财产候选人,名称是描述性的,所以不应该被不必要地改变
如果该方法没有认真的工作使它成为一个属性可能是一件好事,因为它将使它更容易在调用代码时使用.
如果该方法实际上没有"获取"任何名称是坏的,应该更改
以上几点是主观的,但是"永远"总是'这样的硬规则可能是一个坏主意的原因是多个主观因素和竞争因素的平衡是良好开发者的一部分.