前几天我和朋友正在讨论哪种代码风格更好。
案例一:
int function()
{
largeobject a;
//do some stuff without a
//do some stuff with a
}
案例B:
int function()
{
//do some stuff without a
largeobject a;
//do some stuff with a
}
那么哪个代码在速度和可读性方面更好。
前几天我和朋友正在讨论哪种代码风格更好。
案例一:
int function()
{
largeobject a;
//do some stuff without a
//do some stuff with a
}
案例B:
int function()
{
//do some stuff without a
largeobject a;
//do some stuff with a
}
那么哪个代码在速度和可读性方面更好。
您应该尽可能在本地声明对象的变量/实例。因此,在这种情况下,B 将是最佳选择。
考虑一下,如果您在函数体的顶部声明它,其他阅读您的代码的人可能想知道您实际使用该对象的位置。因此,通过将声明放在您实际使用的位置附近将使其更易于阅读。
情况 A 和 B 之间不应该有任何巨大的性能差异。
有一些特殊情况,例如分配大块内存或线程池。在这些情况下,由于可能会消耗时间和资源,您可能需要找到一个更好的地方来分配它们。
如果您是编程新手,您可能需要考虑阅读 Scott Meyers 的书《Effective C++ 》 。第 26 条谈到它:尽可能推迟变量定义。
您应该使用案例 B。不需要在需要之前创建对象。
此外,您的编译器不会解释largeobject a();为使用默认构造函数创建对象,而是解释为函数声明。这被称为“最令人烦恼的解析”。
情况 B 最好。这种情况在 S.Mcconnell book - Complete Code 中有解释。你错了:
那么哪个代码在速度和可读性方面更好。
由于其他原因,案例 B 更好。