对不起,如果这是一个愚蠢的问题:-)
背景
我有如下所示的遗留代码:
struct {
int field1;
int field2;
int field3;
int field4;
... many many fields
} myStruct;
while (something) {
initialzationFunction(&myStruct);
// ...change fields of myStruct and do stuff.
}
while 循环的每次迭代都需要将 myStruct 初始化为某个值,比如说零。initialzationFunction 将 myStruct 的所有字段初始化为零。
问题
将 initialzationFunction 保留在 while 循环中是否更好,或者最好在循环之前调用它一次,让程序员在碰巧更改此代码时“手动”初始化他们需要的东西。
编辑:不幸的是 myStruct 是一个全局变量,因此不能将其设为自动变量,除非我想将它作为参数传递给使用它的大量遗留函数。
我的想法
- 只需调用 initialzationFunction() 将防止错误,以防有人修改代码并忘记稍后初始化 myStruct。
- 查看初始化了哪些特定字段可能会提供更多信息。
- 如果稍后在 while 循环中只修改了几个字段,则调用初始化所有字段的 initialzationFunction() 是多余的。
你会怎么做?