C中子程序的参数数量的最佳实践

Ami*_*mit 5 c argument-passing

我最近开始研究用C语言编写的API.我看到一些子程序需要8个(8个)参数,对我而言,在调用该特定子程序时,它看起来很丑陋,传递8个参数.我想知道是否可以实施更可接受和更清洁的方式.

Joe*_*oey 6

如果可以在逻辑上将多个参数组合在一起,您可以考虑创建一个包含它们的结构,并简单地将该结构作为参数传递.例如,您可以传递一个结构,而不是传递两个坐标值xyPOINT.

但是如果这样的分组不适用,那么任何数量的参数都应该没问题,如果你真的需要它们,尽管它可能表明你的函数有点过多而且你可以将工作分散到更多但更小的函数上.

  • 使用API​​中的结构的@TED反过来会鼓励在客户端代码中使用该结构.这样就可以解决包装和拆包问题.OTOH我不记得自己使用Win32结构除了调用该API之外的任何东西...... (3认同)

Bri*_*per 5

函数调用中的大量参数通常会出现设计问题.通过诸如创建传递而不是单个变量或具有全局变量的结构的方式,存在明显减少参数数量的方法.我建议你不要做其中任何一件事,并参加设计.没有快速或简单的修复,但必须维护代码的人会感谢你.


Ran*_*ndy 2

8可能是一个合适的数字。或者可能这 8 个中的许多都应该属于一个适当的类作为成员,那么你可以传递该类的单个实例......仅通过这种高级讨论很难判断。

编辑:在 C 中,类与本例中的结构类似。