【发布时间】:2015-04-22 21:00:45
【问题描述】:
我在我们的代码库和网上也经常看到这种风格,如果你有一个带有 for 循环和 if 语句的函数,那么只有它们使用的所有变量都不会在它们之外声明。例如:
void process()
{
int i;
int count = 100;
vector3 point;
vector sum;
for (i = 0; i < count; ++i)
{
import(this, "pos", point);
sum += point;
}
sum /= count;
}
或者这是过早的优化?我对 C++、C# 和 Python 很好奇,这些语言是我使用的语言,我在哪里一遍又一遍地看到这些。
【问题讨论】:
-
我非常熟悉 Python(以及来自 Maya 的 MEL),但在我看来,这些变量声明是因为
if/for语句在某些语言中有自己的范围规则(不是很明显,Python)。如果您没有在它们之外声明变量,那么您在这些语句中所做的任何变量分配都不能在函数的后面进一步重复使用。任何人,如果我错了,请随时纠正我。 -
听起来像是继承自 C89 的风格,所有变量都必须在开头声明。
-
我冒昧地猜测可能是准确地说,因为函数可能会发生变化。以这样一种方式声明变量是有意义的,以便以后扩展功能很容易。有点像某些设计模式在您达到一定程度的复杂性之前不会立即有用。我认为在这种情况下将变量声明放在开头只是一个好习惯。而如果不这样做,则每次调整功能时都需要不断地进行修复。
标签: c# python c++ performance optimization