函子和代码分解
Functors and code factoring
假设我有一些代码,看起来像这样:
void doTasksAndStuff()
{
// Do stuff
...
// Do task
...
// Do stuff
...
// Do same task
...
// Do stuff
...
}
由于任务执行了两次,我认为最好对相应的代码进行因式分解:
void doTask()
{
// Do task
...
}
void doTasksAndStuff()
{
// Do stuff
...
doTask();
// Do stuff
...
doTask();
// Do stuff
...
}
现在,如果我这样写呢:
void doTasksAndStuff()
{
auto doTask = []()
{
// Do task
...
};
// Do stuff
...
doTask();
// Do stuff
...
doTask();
// Do stuff
...
}
由于doTask()只在函数doTasksAndStuff()中调用,在我看来,这是一种不污染任何命名空间的代码分解的干净方式,但这是这两种分解方式之间的唯一区别吗?
特别是,性能如何?内联呢?
性能应该大致相同。lambda的最大优点(和区别)是可以在闭包中捕获局部变量。如果你把它作为一个命名函数,那么你必须传递任务中使用的所有局部变量。
请注意,另一种方法是使用局部结构体,您可以将其视为穷人的lambda。
相关文章:
- 通过递归进行因子分解
- 下面的代码是如何工作的?它输出分解的数字并且功能齐全,我只是不明白它是如何做到的
- 有人可以帮助我分解这条代码
- (C++)分解这个简单的输入/输出代码:
- 分解 SDL 代码
- C++:在不传递一百万个参数的情况下分解代码
- 从模板中分解与参数无关的代码
- 将c代码的中间表示分解回c
- 将模板代码分解为单独的编译单元
- 如何将Qt代码分解为单独的部分
- 我能否对这C++代码的每一行中发生的事情有一个分解的解释
- 我有两个类似的类.你会使用什么设计来分解代码
- C 代码分解器
- 将此c++代码分解为单独的类规范文件和函数定义文件
- C++模板:一个按类列出的列表,如何分解代码
- 需要一个使用gsl-LU分解获得平方矩阵逆的示例代码
- 如何正确地分解代码
- 函子和代码分解
- 帮助分解代码
- 使用元数据/继承分解出跨多个类的代码