"吸气剂不应包括大量逻辑." 对或错?

Eng*_*eer 12 c# getter setter properties

我倾向于假设getter只是一个访问控制包装器,而不是一组相当轻量级的指令来返回一个值(或一组值).

结果,当我发现自己写的时间更长,处理器消耗更多的设置器正在我正在做的时候,我觉得也许这不是最聪明的举动.在我自己的代码中调用getter(特别是让我们引用C#,其中方法与getter调用之间存在语法差异),然后我做出一个隐含的假设,即这些是轻量级的 - 实际上可能不是案件.

对此有何普遍共识?除了使用其他人的图书馆,你会写出沉重的吸气剂吗?或者你倾向于将较重的吸气剂视为"完整方法"?

PS.由于语言的差异,我预计会有很多不同的想法......

Tho*_*que 9

来自MSDN:

物业使用指南

在以下情况下使用方法:
[...]

  • 操作非常昂贵,您希望与用户沟通,他们应该考虑缓存结果.结果.

而且:

在属性和方法之间进行选择

在以下情况下,请使用方法而不是属性.

  • 该操作比字段集慢几个数量级.如果您甚至考虑提供异步版本的操作以避免阻塞线程,则很可能该操作太昂贵而无法成为属性.特别是,访问网络或文件系统的操作(初始化除了一次)应该最有可能是方法,而不是属性.


Rob*_*vey 8

属性getter用于检索值.因此,当开发人员调用它们时,期望调用将立即(几乎)立即返回值.如果无法满足此期望,则最好使用方法而不是属性.


Mic*_*yan 6

真正.Getter应该访问一个简单的成员,或者应该计算和缓存派生值,然后返回缓存的值(后续获取没有交错集的应该只返回该值).如果我有一个将要进行大量计算的函数,那么我将其命名computeX,而不是getX.