编程这种风格是否有充分的理由(优势)
XmlDocument doc = null;
doc = xmlDocuments[3];
VS
XmlDocument doc = xmlDocuments[3];
我已经看过很多次,但对我而言,它似乎过于冗长
答案 0 :(得分:30)
不 - 通常认为最好的做法是尽可能晚地声明变量,最好在声明点设置它。我不这样做的唯一时间是我必须有条件地设置变量,或者它设置在更严格的范围内:
String name;
using (TextReader reader = ...)
{
// I can't declare name here, because otherwise it isn't
// accessible afterwards
name = reader.ReadToEnd();
}
在可能的情况下首次使用时声明的原因:
答案 1 :(得分:18)
我会用
XmlDocument doc = xmlDocuments[3];
声明使用它们的变量。
答案 2 :(得分:3)
它们是不同的风格,它们都没有比另一种更客观。这只是一个品味问题。您可以先声明变量,然后为其赋值:
XmlDocument doc;
doc = xmlDocuments[3];
或者你可以在同一个声明中做到这两点:
XmlDocument doc = xmlDocuments[3];
但是,这种形式:
XmlDocument doc = null;
doc = xmlDocuments[3];
要为变量指定空引用,然后立即用不同的引用替换它,完全没有意义。
答案 3 :(得分:2)
理想情况下,声明和赋值应与代码易读性配对。事实上,ReSharper会接受任何例外,并建议他们加入。
答案 4 :(得分:1)
正如其他人指出的那样,如果你需要在循环范围之外声明变量,if或其他东西,第一种样式会很有用。但在大多数情况下,我认为这种风格是Visual Basic 6(及更早版本)旧时代的遗留物,在使用之前你总是必须声明一个变量。
旧的VB不支持你的第二种风格,因此第一种风格仍然很受欢迎......
答案 5 :(得分:0)
如果变量'doc'在之后被赋予,那么它被声明然后没有,我没有看到任何你想要这样做的理由。无论如何,这肯定不是我的风格。
答案 6 :(得分:0)
我喜欢将变量视为“共享”或“不共享”,因为某些变量需要在类或方法中的多个位置使用,有些变量只需要使用一次。 对于前者,我将它们全部声明在相关块的顶部,后者在我使用它们之前声明。
这完全取决于您需要使用它们的位置。
案例1:
Xyz xyz = new Xyz; // Declared at the top.
// Loads of unrelated code in-between...
xyz.abc();
// More unrelated code in-between...
xyz.def(stuff);
案例2:
// Loads of unrelated code above...
Xyz xyz = new Xyz; // Declared in a 'block'.
xyz.abc();
xyz.def(stuff);
xyz.destroy();
// More unrelated code below...
答案 7 :(得分:0)
我主要同意乔恩(更不用说通常我必须同意他: - )。
你有选择:
1
//Do something...
XmlDocument doc = xmlDocuments[3];
//use doc
//Do something...
2
//Do something...
XmlDocument doc = null;
doc = xmlDocuments[3];
//Use doc
//Do something...
3
//Do something...
XmlDocument doc = null;
//...Do something with other variables etc...
doc = xmlDocuments[3];
//Do something...
//Use doc
4
//Do something...
XmlDocument doc = null;
//...Do something with other variables etc...
doc = xmlDocuments[3];
//Use doc
//Do something...
5
//Do something...
XmlDocument doc = null;
doc = xmlDocuments[3];
//Do something...
//Use doc
6
//Do something...
XmlDocument doc = xmlDocuments[3];
//Do something...
//use doc
我希望你能看到选项1很有道理。
最好将声明,定义和初始化保持为“一起”。 选项1是在一行中一起完成的声明,定义和初始化的示例。你可以进一步压缩它:
var doc = xmlDocuments[3];
词汇(语言无关):
我希望这会有所帮助。
答案 8 :(得分:-1)
我更喜欢使用这个:
XmlDocument doc = null;
//blah blah
doc = xmlDocuments[3];
我只想在需要时分配和使用'doc'。
如果我想在作业后立即使用
XmlDocument doc = xmlDocuments[3];
答案 9 :(得分:-2)
我会选择
void Foo()
{
XmlDocument doc;
//Do other code here
//Create doc
doc = xmlDocuments[3];
}
因为doc可能在以后的方法中才被使用。在使用doc之前创建doc更有意义。更容易阅读(减少滚动)。
答案 10 :(得分:-3)
我总是试图在可能的情况下声明并在同一行上分配变量,所以在这种情况下我会尝试使用第二个选项。在阅读代码时,要记住的代码行数越少,声明的变量就越少。最后,我认为这完全取决于您和您的团队使用的编码规则。我们有编码规则说在方法的开头声明所有局部变量,所以我看到了两种编程风格。