如何处理类的"许多小函数"的想法,而不传递大量参数?

Eri*_*ius 6 c++ design-patterns coding-style class-design

随着时间的推移,我开始欣赏许多小功能的心态,而且我真的非常喜欢它,但是我很难将自己的羞怯用于课堂上,特别是那些拥有超过一小部分非公共成员的课程.变量.

每个额外的辅助函数都会混淆接口,因为代码通常是特定于类的,我不能只使用一些通用代码.(据我所知,无论如何,还是初学者,不知道那里的每个图书馆等等)

所以在极端情况下,我通常会创建一个帮助类,它成为需要操作的类的朋友,因此它可以访问所有非公共内容.

另一种选择是需要参数的自由函数,但即使过早的优化是邪恶的,我实际上并没有对它进行分析或反汇编......我仍然只想到传递我需要的所有东西,有时甚至只是作为参考,即使每个参数应该是一个简单的地址.

这一切都是偏好的问题,还是有一种广泛使用的处理这种东西的方式?

我知道尝试强制进入模式是一种反模式,但我担心代码共享和标准,我想让其他人阅读的内容至少相当不痛苦.

那么,你们如何应对呢?

编辑:一些例子促使我提出这个问题:

关于自由函数:DeadMG对使自由函数工作感到困惑......没有参数.

我对这些函数的问题是,与成员函数不同,自由函数只知道数据,如果你给它们,除非使用全局变量等.

然而,有时候,我有一个庞大而复杂的过程,我想为了可读性和理解而分解,但是有很多不同的变量可以在所有地方使用,将所有数据传递给自由函数,这些函数对每个函数都是不可知的.一点成员数据,看起来简直是噩梦. 单击以查看示例

这是一个函数片段,它将数据转换为我的网格类接受的格式.例如,它将所有这些参数重构为"finalizeMesh"函数.在这一点上,它是一个巨大的计算机网格数据功能的一部分,并且在整个地方使用了一些维度信息,大小和缩放信息,交织在一起.

这就是我的意思,"自由功能有时需要太多参数".

我认为它显示出糟糕的风格,并不一定是本身不合理的症状,我希望:P.

如果有必要的话,我会尽力清理更多的事情.

Fre*_*Foo 4

每个附加的辅助函数都会使界面变得混乱

辅助函数private则不然。

我通常创建一个辅助类,它成为需要操作的类的友元

除非绝对不可避免,否则不要这样做。您可能希望将类的数据分解为更小的嵌套类(或普通的旧struct类),然后在方法之间传递这些数据。

有时,我仍然害怕传递我需要的所有东西,即使只是作为参考

这并不是过早的优化,而是一种完全可以接受的预防/减少认知负荷的方法。您不希望函数采用三个以上的参数。如果超过三个,请考虑将数据打包在 astruct或中class