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

本文关键字:最佳 声明 局部变量 方法 | 更新日期: 2023-09-27 17:50:14

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

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

从历史上看,在许多语言中,变量都是预先声明的,因为您必须预先指示编译器关联寄存器和/或在堆栈上为它们分配空间。在。net中,这实际上在IL代码中仍然是必需的,因为它使编译器的工作更容易。

值得庆幸的是c#比IL级别高得多,所以我们不必担心这些细节。从这个约束中解放出来,限制变量的作用域有很多概念上的价值,因为这意味着您需要查看更少的代码来理解变量发生了什么。在方法顶部声明的变量可以在该方法的任何地方使用。在内部'if'中声明的变量只在该范围内使用,一旦超出该范围,就可以忽略它;此外,在方法中稍后声明的变量只能在声明之后使用。这是一种微型的隔离/封装,进一步减少了开发人员必须立即考虑的事情的数量,以理解给定的代码段是做什么的。

我更喜欢你的例子2,因为它有更少的行,这通常意味着更容易阅读和更少的bug。

对于短方法(你所有的方法都很短,对吧?),这没有太大的区别。

但是我要避免不必要的变量初始化,你总是随后设置:

void myMethod()
{
    var example = String.Empty;  // Unnecessary initialization
    var xmlDoc = new XmlDocument();
    xmlDoc.LoadXml("c:'my.xml");
    example = doc.SelectSingleNode("//TestNode").OuterXml;
}

为了避免这种情况,你自然会在变量初始化的地方声明它们,例如你的例子2

这只是个人喜好,什么最容易阅读和理解。

我习惯在方法开始时声明变量,因为我习惯用c。

在c#中,在开始时声明它们是我的个人偏好,但在C中,我必须在开始时声明它们