【问题标题】:Why "Properties that return arrays are prone to code inefficiencies"?为什么“返回数组的属性容易导致代码效率低下”?
【发布时间】:2010-07-24 06:18:22
【问题描述】:

我有一段代码处理存储在数据库中的客户。有一个对象Customer,除此之外,它还有两个byte[] 类型的属性:一个属性用于密码盐,第二个属性用于密码哈希。

使用 FxCop 检查代码,我发现它抱怨(CA1819性能规则):

“返回数组的属性容易导致代码效率低下。考虑使用集合或将其作为方法。有关更多信息,请参阅设计指南。”

并建议:

“更改 'Customer.PasswordHash' 以返回集合或使其成为方法。”

我不太明白,我在做什么代码效率低下是怎么回事?

【问题讨论】:

    标签: oop performance fxcop


    【解决方案1】:

    问题在于数组总是是可变的。这意味着您不能在没有任何一个的情况下从方法中返回一个:

    • 允许调用者弄乱你的内部状态
    • 先创建副本

    如果您使用集合,则可以改为围绕真实集合创建一个只读包装器,然后将其返回 - 这样会便宜得多。或者,如果您将其更改为可以降低预期调用速度的方法。

    当然,如果您对调用者更改您的数据感到满意,那么数组将可以正常工作...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2019-06-21
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多