大家对使用 lambda 在 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();
}
你这样做:
void make_omlette()
{
auto prepare_eggs = [&]()
{
...
};
auto prepare_ham = [&]()
{
...
};
auto prepare_cheese = [&]()
{
...
};
auto fry_ingredients = [&]()
{
...
};
prepare_eggs();
prepare_ham();
prepare_cheese();
fry_ingredients();
}
来自学习如何使用 Pascal 编码的一代,嵌套函数对我来说非常有意义。但是,在我以这种方式使用 lambda 的代码审查期间,这种用法似乎让我小组中一些经验不足的开发人员感到困惑。
最佳答案
我看不出嵌套函数本身有什么问题。我将 lambdas 用于嵌套函数,但前提是它满足某些条件:
- 在不止一次的地方调用它。 (否则如果不是太长就直接写代码)
- 它实际上是一个内部函数,因此在任何其他上下文中调用它都是没有意义的。
- 足够短(最多 10 行)。
因此,在您的示例中,我不会将 lambdas 用于第一个原因。
概念上的嵌套函数很有用,原因与类中的私有(private)方法有用的原因相同。它们强制执行封装,并且更容易查看程序的结构。如果一个函数是其他函数的实现细节,那么为什么不明确地这样做呢?
我看到的最大问题是可读性;阅读具有大量嵌套和缩进的代码更加困难。此外,人们对 lambdas 还不是很满意,因此预计会有阻力。
关于c++ - 使用 lambdas 做嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9438874/