C#最佳做法是在方法顶部声明所有局部变量,还是在第一次使用时声明它们?
示例1:
void myMethod()
{
var example = String.Empty;
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml("c:\my.xml");
example = doc.SelectSingleNode("//TestNode").OuterXml;
}
示例2:
void myMethod()
{
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml("c:\my.xml");
var example = doc.SelectSingleNode("//TestNode").OuterXml;
}
答案 0 :(得分:6)
历史上,变量是在许多语言中预先声明的,因为您必须预先指示编译器关联寄存器和/或在堆栈上为它们分配空间。在.NET中,IL代码实际上仍然需要它,因为它使编译器的工作更容易。
值得庆幸的是,C#比IL高得多,所以我们不必担心这些细节。从该约束中解脱出来,在限制变量范围方面存在很多概念上的价值,因为这意味着您需要查看的代码越少,以了解变量的变化。在方法顶部声明的变量可以在该方法的任何位置使用。在内部声明的变量' if'仅在该范围内使用,您可以在该范围之外忽略它;此外,方法中稍后声明的变量只能在声明后使用。它的绝缘/封装是微型的,进一步减少了开发人员必须立即考虑的事情,以了解给定的代码片段正在做什么。
答案 1 :(得分:1)
我更喜欢你的例子2,因为它有更少的行,通常意味着更容易阅读和更少的错误。
对于简短的方法(你所有的方法都很简短,对吗?)它并没有那么大的差异。
但是我会避免不必要的变量初始化,你随后会设置这些变量:
void myMethod()
{
var example = String.Empty; // Unnecessary initialization
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml("c:\my.xml");
example = doc.SelectSingleNode("//TestNode").OuterXml;
}
避免这种情况自然会导致你在他们首次初始化的地方声明变量,即你的例子2。
答案 2 :(得分:0)
这只是个人偏好,最容易阅读和理解。
我用来在方法的开头声明我的变量,因为我用它在C中做。
在C#中,在开始时声明它们是我个人的偏好,但是我必须在开始时声明它们。