我想问一下你在编程时想到的一些想法。在for循环之前,我创建新的局部变量来保存所有结构变量,以提高可读性和性能。这是示例代码:
#define PI 3.14
typedef struct{
double var1;
double var2;
double var3;
double var4;
}MyStruct1;
typedef struct{
double var1;
double var2;
double var3;
}MyStruct2;
double* Foo(const MyStruct1* const struct1, const MyStruct2* const struct2){
const int size = 10000;
double* arr = (double*)calloc(size*5, sizeof(double));
if(!arr)
return NULL;
const double a = struct1->var1;
const double b = struct1->var2;
const double c = struct1->var3;
const double d = struct1->var4;
const double e = struct2->var1;
const double f = struct2->var2;
const double g = struct2->var3;
for(int i = 0 ; i < size; i++){
arr[i] = -a*pow(b,2.0)*c*d;
arr[i + size] = 2.0*a*b*c*2.0*PI*g*f;
arr[i + 2*size] = -2.0*Pi*a*g*d;
arr[i + 3*size] = -a*g;
arr[i + 4*size] = b;
}
return arr;
}
首先,如果我不使用局部变量来保存struct1值 for循环将在一行中包含大量文本。我认为它增加了可读性,因为如果我要用struct1-> var替换a,b,c,d,e,f,g,那么我必须使2行或更多来计算arr [i]等< / p>
其次我认为它可能会提高性能,因为我不需要在for循环的每次迭代中取消引用这些指针。我不知道循环将来是10000次迭代还是100000次。
我认为此解决方案可提高可读性和性能。性能提升可能甚至不明显,但我这样做是为了提高功能关键部分的可读性。在我的真实程序中,var1,var2等具有更长的名称。例如,它们的名称为:bandwidthFactor,centralFrequency。
由于我不是非常有经验的程序员,我想问一下我所假设的是否正确。我这样做是对的,或者我不应该创建新变量并使用struct-&gt; var1语法来计算arr [i]值。 对我来说这似乎更优雅,但真正重要的是那些未来可能会看到这样的代码的人更优雅。