为啥“返回数组的属性容易导致代码效率低下”?
Posted
技术标签:
【中文标题】为啥“返回数组的属性容易导致代码效率低下”?【英文标题】:Why "Properties that return arrays are prone to code inefficiencies"?为什么“返回数组的属性容易导致代码效率低下”? 【发布时间】:2010-07-24 06:18:22 【问题描述】:我有一段代码处理存储在数据库中的客户。有一个对象Customer
,除此之外,它还有两个byte[]
类型的属性:一个属性用于密码盐,第二个属性用于密码哈希。
使用 FxCop 检查代码,我发现它抱怨(CA1819、性能规则):
“返回数组的属性容易导致代码效率低下。考虑使用集合或将其作为方法。有关更多信息,请参阅设计指南。”
并建议:
“更改 'Customer.PasswordHash' 以返回集合或使其成为方法。”
我不太明白,我在做什么代码效率低下是怎么回事?
【问题讨论】:
【参考方案1】:问题在于数组总是是可变的。这意味着您不能在没有任何一个的情况下从方法中返回一个:
允许调用者弄乱你的内部状态 先创建副本如果您使用集合,则可以改为围绕真实集合创建一个只读包装器,然后将其返回 - 这样会便宜得多。或者,如果您将其更改为可以降低预期调用速度的方法。
当然,如果您对调用者更改您的数据感到满意,那么数组将可以正常工作...
【讨论】:
以上是关于为啥“返回数组的属性容易导致代码效率低下”?的主要内容,如果未能解决你的问题,请参考以下文章
为啥选择单个属性返回的行数少于选择 Oracle SQL 中的所有列
当我已经使用游标时,为啥我得到“精确提取返回的行数超过请求的行数”?