我看到了很多具有以下结构的代码:
public void Blah()
{
int a = 0;
string b = "";
DateTime c = DateTime.MinValue;
bool d = false;
// ...More initializations with dummy values
// Overwrite the values in a, b, c, d, e.g. a = ReturnInt();
// Do calculations, reading the values from a, b, c, d, like DoCalculations(a);
}
一般来说,我更喜欢这样的东西:
public void Blah()
{
int a = GetInt();
string b = GetString();
DateTime c = GetDateTime();
bool d = GetBool();
// Do calculations, reading the values from a, b, c, d, like DoCalculations(a);
}
这是否真的有必要,并且由于额外的初始化会有任何性能命中吗?
答案 0 :(得分:5)
变量应该在使用前初始化,如果你使用的是read
,如果要在初始化后立即覆盖它,那么更好地遵循你所展示的第二种风格出于可读性目的,我预计性能会受到影响(来自样式#1),如果有的话通常是最小的。
答案 1 :(得分:-1)
初始化变量是许多开发人员使用的通用标准。
初始化变量是因为根据语言和环境,读取未初始化的变量可能会产生未定义的行为。并且因为变量可能会或可能不会自动初始化的确切条件很难记住,所以人们倾向于总是在使用它们之前初始化对象。
在构造函数中执行此初始化通常被认为是一种好习惯。
在Scott Meyers的非常受欢迎的书 Effective C ++ 中也特别提及。