小编Jac*_*b G的帖子

在循环之前或内部放置初始化代码更好?

对不起,如果这是一个愚蠢的问题:-)

背景

我有遗留代码,如下所示:

struct {
int field1;
int field2;
int field3;
int field4;
... many many fields
} myStruct;


while (something) {
initialzationFunction(&myStruct);

// ...change fields of myStruct and do stuff.
}
Run Code Online (Sandbox Code Playgroud)

while循环的每次迭代都需要将myStruct初始化为某个东西,假设为零.initialzationFunction将myStruct的所有字段初始化为零.

这个问题

将initialzationFunction保留在while循环中是否合适,或者最好在循环之前调用它一次,如果碰巧更改此代码,让程序员"手动"初始化他们需要的东西.

编辑:不幸的是myStruct是一个全局变量,因此将其作为自动变量不是一个选项,除非我想将它作为参数传递给大量使用它的遗留函数.

我的想法

  • 只是调用initialzationFunction()将防止错误,以防有人修改代码并忘记以后初始化myStruct.
  • 查看哪些特定字段已初始化可能会提供更多信息.
  • 如果稍后在while循环中仅修改了几个字段,则调用所有字段中的initialzationFunction()是多余的.

你会怎么做?

c legacy-code

8
推荐指数
2
解决办法
450
查看次数

unordered_map如何在内部使用其哈希?

unordered_map如何在内部使用哈希函数来访问属于键的存储桶?

std :: hash返回size_t类型,该类型可能大于容器中存在的存储桶的数量。返回的哈希值如何映射到存储桶索引?

典型的unordered_map实现是按size()还是max_size()对返回的哈希值进行模运算,还是会发生更复杂的事情?

c++ hash

2
推荐指数
1
解决办法
643
查看次数

标签 统计

c ×1

c++ ×1

hash ×1

legacy-code ×1