大家对使用lambdas在C++中做嵌套函数有什么看法?例如,而不是这样:
static void prepare_eggs()
{
...
}
static void prepare_ham()
{
...
}
static void prepare_cheese()
{
...
}
static fry_ingredients()
{
...
}
void make_omlette()
{
prepare_eggs();
prepare_ham();
prepare_cheese();
fry_ingredients();
}
Run Code Online (Sandbox Code Playgroud)
你做这个:
void make_omlette()
{
auto prepare_eggs = [&]()
{
...
};
auto prepare_ham = [&]()
{
...
};
auto prepare_cheese = [&]()
{
...
};
auto fry_ingredients = [&]()
{
...
};
prepare_eggs();
prepare_ham();
prepare_cheese();
fry_ingredients();
}
Run Code Online (Sandbox Code Playgroud)
来自通过使用Pascal学习如何编码的一代,嵌套函数对我来说非常有意义.但是,在代码审查期间,这种用法似乎让我工作组中一些经验不足的开发人员感到困惑,因为我以这种方式使用了lambdas.
Tim*_*imo 12
我没有看到嵌套函数本身有什么问题.我将lambdas用于嵌套函数,但只有在满足某些条件时:
因此,在您的示例中,我不会将lambdas用于第一个原因.
概念上嵌套的函数可能与类中的私有方法有用的原因相同.它们强制执行封装,并且可以更轻松地查看程序的结构.如果函数是某个其他函数的实现细节,那么为什么不明确地这样做呢?
我看到的最大问题是可读性; 读取具有大量嵌套和缩进的代码更加困难.此外,人们对lambdas不太满意,但预计会有阻力.
对于任何给定的代码片段,请根据需要将其设为可见,并尽可能隐藏:
通过收到的评论,您已经可以猜测您正在做一些非正统的事情。这就是 C++ 名声不佳的原因之一,人们从未停止滥用它。Lambda 主要用作标准库算法和需要某种回调机制的地方的内联函数对象。我认为这涵盖了 99% 的用例,并且应该保持这种状态!
正如 Bjarne 在他的一次演讲中所说:“并非所有东西都应该是模板,也不是所有东西都应该是对象。”
并不是所有东西都应该是 lambda :) 独立函数没有任何问题。
| 归档时间: |
|
| 查看次数: |
2153 次 |
| 最近记录: |