如何避免函数中参数过多。C++

我正在用OpenGL c++制作一个小型游戏引擎,我需要制作很多类,如Camera, BatchRenderer, AudioEngine, ParticleEngine, Level, Player, Zombie, Humans等。现在,玩家必须与诸如Camera, BatchRenderer, AudioEngine, ParticleEngine, Level类的级别数据、Zombie, Human等类进行交互。我通过引用来传递它们中的大部分,这些都是在我的主游戏类中初始化的。

/ AudioEngine和ParticleEngine是在主游戏类中创建的,玩家需要播放声音和模拟粒子。TextureID、位置、半径(大小)、旋转、深度和颜色是渲染玩家所需要的。

Player::Player(AudioEngine& a_audioEngine, ParticleEngine& a_particleEngine
               GLuint a_textureID, glm::vec2 a_position, float a_radius,
               float a_rotation, float a_depth, Color a_color)
{...}

/ LevelData,僵尸,人类来检查是否有玩家在视野中。

void Player::update(Camera& camera, std::vector<std::string>& levelData,
                    std::vector<Zombie>& zombies, std::vector<Human>& humans,
                    float deltaTime)

在这里你可以看到有太多的参数被传递给玩家类,并且在未来也需要更多的参数。但是我看到很多人说在一个函数里有两个或三个以上的参数是不好的。而在我的游戏中,有很多类的参数超过了5、6个。

这对于游戏来说是正确的吗,还是说这是一种不好的做法呢,请告诉我如何解决这个问题。

Sorry for bad English.Thank you very much for reading.

解决方案:

有太多的参数是不好的,只有当你在你的程序中经常调用你的函数时才会这样,因为你要付出把你的函数的参数放在堆栈上的代价,加上函数调用的间接性。

如果你不是经常调用这些函数,那么就不要去打包变量。

如果你需要打包变量,你可以直接把它们放入一个 struct 并向函数传递一个单一的参数(通常是一个引用,以避免复制)!

给TA打赏
共{{data.count}}人
人已打赏
未分类

我如何定义帖子列表的最后一个文档?

2022-9-8 15:46:22

未分类

调用类的输出是重复的结果(JavaFX)

2022-9-8 15:46:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索