【发布时间】:2010-10-19 10:21:26
【问题描述】:
我继承了一些广泛且不必要地使用 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 的不必要使用还有什么破坏性?
我特别关心维护。最好通过示例给出合理的答案。
也欢迎您争辩说清理是不必要的。
【问题讨论】: