这可能是个人喜好的问题,但是什么时候在代码中使用属性而不是函数
例如,要获取错误日志,我可以说
string GetErrorLog()
{
return m_ErrorLog;
}
或者我可以
string ErrorLog
{
get { return m_ErrorLog; }
}
您如何决定使用哪一个?我的用法似乎不一致,我正在寻找一个好的通用经验法则。谢谢。
如果满足以下条件,我倾向于使用属性:
- 该属性将返回单个逻辑值
- 涉及很少或不涉及逻辑(通常只是返回一个值,或进行少量检查/返回值)
如果满足以下条件,我倾向于使用方法:
- 返回值将涉及大量工作 - 即:它将从数据库中获取,或者可能需要“时间”的东西
- 在获取或设置值时涉及相当多的逻辑
另外,我建议看看Microsoft 的属性使用设计指南 http://msdn.microsoft.com/en-us/library/bzwdh01d%28VS.71%29.aspx#cpconpropertyusageguidelinesanchor1。他们建议:
当成员是逻辑数据成员时使用属性。
在以下情况下使用方法:
- 该操作是一个转换,例如Object.ToString。
- 该操作的成本足够高,您希望告知用户他们应该考虑缓存结果。
- 使用 get 访问器获取属性值会产生明显的副作用。
- 连续两次调用该成员会产生不同的结果。
- 执行顺序很重要。请注意,类型的属性应该能够以任何顺序设置和检索。
- 该成员是静态的,但返回一个可以更改的值。
- 该成员返回一个数组。返回数组的属性可能非常具有误导性。通常需要返回内部数组的副本,以便用户无法更改内部状态。再加上用户可以轻松假设它是索引属性这一事实,会导致代码效率低下。在下面的代码示例中,对Methods 属性的每次调用都会创建数组的副本。结果,将在下面的循环中创建该数组的 2n+1 个副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)