gpt4 book ai didi

c++ - 使用 C++ 类处理常用参数

转载 作者:行者123 更新时间:2023-12-04 08:07:20 26 4
gpt4 key购买 nike

我的团队在 C++ 中的 HTTP Web 服务器上工作。代码库随着时间的推移而老化,并且存在一个普遍存在的问题,即向每个函数传递 12 个以上的参数。
一个假的例子:我们需要 build 一辆汽车,但为了做到这一点,我们有以下功能:

MaybeBuildCar(engine_params, steering_params, interior_params, fuel_params, available_inventory, parts, &debug);
我们团队中有人建议我们创建一个包装器 CarBuilder类,其构造函数接受参数和“有状态”对象,如 available_inventory , 然后有一个单独的函数 BuildCar如下:
CarBuilder car_builder(engine_params, steering_params, interior_params, fuel_params, available_inventory, &debug);

auto car = car_builder.BuildCar(parts);
就个人而言,我认为拥有一个始终被调用的具有单个公共(public)函数的类没有多大值(value)。我们总是需要这些参数,我们总是需要零件,所以这只是增加了制造汽车的步骤。它甚至可能会增加困惑,因为现在是 CarBuilder 的用户。必须知道构造它并调用 BuildCar .
诚然,这简化了我们在 car_builder.cc 中的辅助函数。 ,因为它们还需要传递这些参数,但对我来说,这是在滥用类的用途:维护状态。
创建这个 CarBuilder 是对类的滥用,还是只是清理函数签名有效?有人对如何解决这个问题有任何建议吗?

最佳答案

最小化函数参数对于在性能敏感的环境中频繁使用的函数是一件好事:
如果将 6 个引用传递给一个函数,那就是 6 个指针拷贝被压入堆栈;
如果您通过单个 CarBuilder ,它是一个“包含 6 个其他引用的引用”。
这取决于你的情况。

关于c++ - 使用 C++ 类处理常用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66164514/

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