现在我们可以在代码库中使用C++ 11 lambdas,我们正在努力解决如何定义和使用它们的一般原则.我意识到这确实存在主观因素,但我认为也可能有一些更为一般的经验法则对社区有用.
定义lambda的一般原则是什么?
[&]
或值来捕获[=]
?性能影响是什么?[&foo]
?就个人而言,我目前的一般原则是"只要你需要一个简单的谓词或比较器就使用lambda",但这可能意味着我错过了一些更强大的用例.
这些问题有些主观,但我会尝试一下:
当您需要修改封闭范围内的值(显然),或者当您想避免复制大量变量时,通过引用捕获;否则按价值捕获。
如果您需要修改封闭范围内的特定变量的值,而不是其他变量的值,请通过引用捕获特定变量。
我尝试始终指定返回类型以提高可读性(以便其他人可以立即知道返回类型,而不必解析 lambda 来推导它)。
最后一个是最主观的,但我个人认为大于 3-5 行的 lambda 应该重构为函数,因为长 lambda 会降低可读性。然而,可能有很多例外,所以这只是个人喜好的问题,很大程度上取决于实际的代码。
归档时间: |
|
查看次数: |
362 次 |
最近记录: |