c# – Ref滥用:值得清理?
发布时间:2020-12-15 03:42:06 所属栏目:百科 来源:网络整理
导读:我继承了一些使用ref关键字广泛而不必要的代码.原来的开发者显然担心,如果没有使用ref,那么对象将被克隆为原始类型,并且在编写50k行代码之前并没有打算研究这个问题. 这与其他不好的编码实践相结合,造成了一些表面上非常危险的情况.例如: Customer person =
我继承了一些使用ref关键字广泛而不必要的代码.原来的开发者显然担心,如果没有使用ref,那么对象将被克隆为原始类型,并且在编写50k行代码之前并没有打算研究这个问题.
这与其他不好的编码实践相结合,造成了一些表面上非常危险的情况.例如: Customer person = NextInLine(); //person is Alice person.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; } 现在,你不只是一个不同的人,你已经完全被抹去了! 只要任何开发此应用程序的人都了解:
和:
如果代码正如预期的那样工作,并且您的开发人员了解这些差异,则可能不值得将其全部删除. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |