c# – Ref滥用:值得清理?

c# – Ref滥用:值得清理?,第1张

概述我继承了一些使用ref关键字广泛而不必要的代码.原来的开发者显然担心,如果没有使用ref,那么对象将被克隆为原始类型,并且在编写50k行代码之前并没有打算研究这个问题. 这与其他不好的编码实践相结合,造成了一些表面上非常危险的情况.例如: Customer person = NextInLine(); //person is Aliceperson.DataBackend.ChangeAddr 我继承了一些使用ref关键字广泛而不必要的代码.原来的开发者显然担心,如果没有使用ref,那么对象将被克隆为原始类型,并且在编写50k行代码之前并没有打算研究这个问题.

这与其他不好的编码实践相结合,造成了一些表面上非常危险的情况.例如:

Customer person = NextInline(); //person is Aliceperson.DataBackend.ChangeAddress(ref person,newAddress);//person Could Now be Bob,Eve,or null

你能想象走进商店改变你的地址,走出去是一个完全不同的人吗?

可怕,但实际上在这个应用中使用ref似乎是无害的多余的.我有麻烦证明需要大量的时间来清理它.为了帮助出售这个想法,我提出了以下问题:

如何不必要地使用ref是破坏性的?

我特别关心维护.具有实例的合理答案是首选.

你也欢迎辩论清理是不必要的.

解决方法 我会说最大的危险是,如果由于某种原因参数在函数内设置为null:
public voID MakeNull(ref Customer person){    // random code    person = null;    return;}

现在,你不只是一个不同的人,你已经完全被抹去了!

只要任何开发此应用程序的人都了解:

By default,object references are passed by value.

和:

With the ref keyword,object references are passed by reference.

如果代码正如预期的那样工作,并且您的开发人员了解这些差异,则可能不值得将其全部删除.

总结

以上是内存溢出为你收集整理的c# – Ref滥用:值得清理?全部内容,希望文章能够帮你解决c# – Ref滥用:值得清理?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1260420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存