在C 函数中使用几个示波器块
On using several scoped blocks in a C++ function
我开始越来越吸引使用连续的示波器块编写长C 算法函数,如下:
void my_algorithm(const MyStruct1 &iparam1, MyStruct2 &oparam2)
{
// First block
MyStruct3 intermediate_var3;
{
double temporary_var;
// Functional step 1.1
// Functional step 1.2
intermediate_var3 = ...
}
// Second block
MyStruct4 intermediate_var4;
{
double temporary_var;
// Functional step 2.1
// Functional step 2.2
intermediate_var4 = ...
}
// Final block
{
int temporary_var;
oparam2 = ...
}
}
我开始认为这是阐明功能结构并限制临时变量范围的好方法(例如i
,j
,k
等)。我看到这样的范围块在C函数中有意义以启用新声明(请参阅为什么将C代码包装在Curly Braces中?)。
在C 的背景下,这是好是坏练习吗?
这是一个明确的标志,您应该将此单独的块提取到单独的功能中。
MyStruct3 DoSth3(params)
{
double temporary_var;
// Functional step 1.1
// Functional step 1.2
return ...
}
MyStruct4 DoSth4(params)
{
double temporary_var;
// Functional step 2.1
// Functional step 2.2
intermediate_var4 = ...
}
void my_algorithm(const MyStruct1 &iparam1, MyStruct2 &oparam2)
{
// First block
MyStruct3 intermediate_var3 = DoSth3(params);
// Second block
MyStruct4 intermediate_var4 = DoSth4(params);
int temporary_var;
oparam2 = ...
}
可能会发生,您会担心DoSth3
和DoSth4
公开,因为它们应该在my_algorithm 的上下文中是私有的。在这种情况下,您可以通过以下方式解决它:
class my_algorithm
{
private:
static MyStruct3 DoSth3(params);
static MyStruct4 DoSth4(params);
public:
static void Perform(const MyStruct1 &iparam1, MyStruct2 &oparam2);
};
相关文章:
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何返回或护理项目清单基于几个类别
- 我们如何在文本文件中找到C++中的几个单词?
- 关于 std::bitset 构造函数的几个问题?
- 几个 Nt 函数在 Windows 7 x32 上返回STATUS_WAIT_0
- std::stoi 只转换前几个字符
- C++ 通过接口使用从其他几个类继承的类
- 在矢量中使用擦除时双重释放或损坏(快速顶部).如何擦除一个矢量的几个项目知道它们的索引?
- 如何遍历几个每小时一次的根(.root)文件,并将它们组合成更大的每日数据.root文件?
- 我有几个关于参考变量的问题
- 如何将几个变量复制到其他变量
- 如何在新设计中迁移需要几个额外参数的函数
- 多线程.如果我使用信号量,我可以在开始时创建很多线程还是应该只有几个线程?
- 如何在几个空行后打印文件中的输出
- recvfrom 只收到几个数据包,之后它进入等待状态
- 使用 std::vector<std::future<int>> 和 std::async 启动几个线程时中止
- C++ 两个线程,共享几个整数变量
- 在循环中使用字符串流从几个字符串中提取数字
- 在C 函数中使用几个示波器块