CppCheck找到了一些调查结果:"变量的范围' x'可以减少"。
如果我遇到这种情况该怎么办:
int x;
for (int i = 0; i != 10; ++i)
{
x = someFunction();
// ... I use x variable here
}
我认为我的代码没问题。你怎么看?它应该改变吗?
for (int i = 0; i != 10; ++i)
{
int x = someFunction();
// ... I use x variable here
}
在第二个代码中,为所有迭代定义了一个变量x ... Isn不正常(不是最优的),我猜..
答案 0 :(得分:6)
如果变量x不在循环外使用,那么第二种方法要好得多。并且代码的优化没有任何问题。变量的内存在循环中只分配一次。
答案 1 :(得分:6)
int
声明的位置没有性能影响,因此Cppcheck在提出此样式问题时是正确的。此样式问题也可以应用于非平凡类型,
for (int i = 0; i != 10; ++i)
{
MyType x = someFunction();
// ... I use x variable here
}
因为构造函数往往与赋值一样有效。从版本1.65开始,Cppcheck似乎不区分琐碎和非平凡类型。
但是不要盲目地遵循这样的风格建议,会有一些非平凡的类型,其中分配比建设更有效。 (像往常一样:如果对性能有疑问,请测量!)
答案 2 :(得分:2)
正如其他人所提到的,对于琐碎的类型,它不太可能对性能产生重大影响。
但是,您还应该考虑通过缩小范围,通过使声明更接近使用来帮助提高可读性,并且可能更重要的是,使重构更容易。
在考虑可维护性时,这两者都很重要。
我们都知道我们应该保持功能简短和重构,但我们都看到了那些5000行长怪物,其中变量被声明在顶部,并使用了一次,3789行。如果你< / em>没有,可怜我们其他人。