gpt4 book ai didi

lambda - 大量函数 vs 大量 Lambda?

转载 作者:行者123 更新时间:2023-12-04 06:37:58 26 4
gpt4 key购买 nike

在此之前,我已经发布了一些关于使用 std::function 的问题。快速委托(delegate),以及存储std::function 的方式在集合中展示可以添加和删除的事件的行为。我还询问了写一大堆小东西时的最佳实践EventArg -type 类,这个小小的设计决定也被搁置了。这是一个很棒的社区!

现在,撇开序言不谈,我的结构必须到位,是时候编写所有处理传入数据的处理程序了。我有一个 std::map ,看起来像这样:

typedef std::function<void(const CommandData&)> CommandDelegate;
typedef boost::shared_ptr<CommandDelegate> CommandDelegatePtr;
typedef std::map<short, CommandDelegatePtr> CommandMap;

我希望为此添加大约 200 个处理程序。我可以在标准成员函数和 lambdas 之间进行选择。

在考虑成员函数时,我首先想到的是 200 个声明和 200 个实现以及一个大源文件。

与其用所有这些处理程序污染我的类,我想“好吧,它们只是句柄,为什么不使用 lambdas?看起来很简单,当构造类时,它可以将所有这些匿名函数分配给映射。工作完成了!

然后我意识到构造函数会很大。我可以调用一个“initializeMap”辅助函数,由于它的大小,可以想象它可以放入它自己的文件中。

你们有什么感想?
  • .h 中有 200 个声明文件,.cpp 文件中的 200 个实现(以及其他功能)
  • .h 中有 200 个声明文件,一个单独的“handlers.cpp”实现文件
  • 没有声明,在 ctor
  • 中分配了 200 个 lambdas
  • 没有声明,在 initializeMap 中分配了 200 个 lambdas函数在它自己的文件中。

  • 提前致谢!

    最佳答案

    我的观点是,尽可能使用 lambdas。它们更易于维护。例如,如果您有一个成员函数,则每次更改它时都必须更新声明和定义,并且还必须为其分配一个唯一名称。 Lambda 是更好的选择。如果我可以对成员变量进行自动类型推导,我将永远不会使用成员函数。

    关于lambda - 大量函数 vs 大量 Lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634188/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com