在方法中放置局部变量声明的最佳实践?

时间:2014-03-13 21:51:46

标签: c# variables coding-style local-variables

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;
}

3 个答案:

答案 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#中,在开始时声明它们是我个人的偏好,但是我必须在开始时声明它们。