我目前正在维护一些遗留的网络应用,我经常偶然发现这样的代码:
Model modelObject = null;
modelObject = new Model(/*[whatever]*/);
return modelObject;
我会直观地写下:
return new Model(/*[whatever]*/);
或:
Model modelObject = new Model(/*[whatever]*/);
// [anything implying modelObject]
return modelObject;
但是,我并不坦率地理解为什么会以第一种方式写出来,因此我的问题就出现了:在安全方面,我是否有任何遗漏的东西会转向第一个例子或效果?
答案 0 :(得分:3)
在您的示例中,分配null
并没有任何区别,只会浪费可打印的字符。
您可能想要分配null
的原因是,是否存在分支或可能未设置该值的情况和/或由于异常或类似情况而明确需要检查它。< / p>
e.g
string str = null;
if(somecondition)
str = "set"
return str;
答案 1 :(得分:0)
为什么代码最终会以这种方式出现,可能有很多原因;如果它从一开始就受版本控制,并且编写它的人都在努力编写好的提交消息,那么你可以从阅读提交日志中学到一些东西。但是,对我而言,这似乎更有可能表明该代码是由仍在学习的人撰写的。
也就是说,即使代码看起来像是一个很好的理由,也没有充分的理由让它在今天这样做。重构! :)