- 主题:一个函数有十好几个参数时,咋处理为好呢?
经常看到有人写的一个函数有十几个参数,感觉有点bad smell
如果把有相关性的几个参数放入到一个struct中,然后传递const struct &,不知道会不会影响编译器优化。
--
FROM 114.241.227.*
读一点Fortran代码,导师手里祖传那种,物理或者生物,
据说几十个参数,开头再声明十来个来个单字母产量,
回头再看这种函数,就感觉好很多。
【 在 z16166 的大作中提到: 】
: 经常看到有人写的一个函数有十几个参数,感觉有点bad smell
: 如果把有相关性的几个参数放入到一个struct中,然后传递const struct &,不知道会不会影响编译器优化。
:
--
FROM 61.185.187.*
取决于你用哪个c++标准,17或者以上的话
https://abseil.io/tips/173
【 在 z16166 的大作中提到: 】
: 经常看到有人写的一个函数有十几个参数,感觉有点bad smell
: 如果把有相关性的几个参数放入到一个struct中,然后传递const struct &,不知道会不会影响编译器优化。
:
--
FROM 125.119.101.*
很多年前学的第一门高级语言就是fortran。不能比烂啊,还是要有点B格的追求吧,哈哈
【 在 DoorWay 的大作中提到: 】
: 读一点Fortran代码,导师手里祖传那种,物理或者生物,
: 据说几十个参数,开头再声明十来个来个单字母产量,
: 回头再看这种函数,就感觉好很多。
: ...................
--
FROM 114.241.227.*
用数组或者链表?
【 在 z16166 的大作中提到: 】
: 经常看到有人写的一个函数有十几个参数,感觉有点bad smell
: 如果把有相关性的几个参数放入到一个struct中,然后传递const struct &,不知道会不会影响编译器优化。
:
--
FROM 120.230.113.*
【 在 z16166 的大作中提到: 】
: 经常看到有人写的一个函数有十几个参数,感觉有点bad smell
: 如果把有相关性的几个参数放入到一个struct中,然后传递const struct &,不知道会不会影响编译器优化。
:
放进struct是不是能更优化这个感觉不是个确定的结果
现在的abi,一般都是前n个参数放进寄存器,这在一般情况下更有利
--
FROM 114.250.178.*
写代码优先好看。因为程序员看代码的时间比写代码的时间多。再烂的程序员打字速度也能达到 50 w/s. 等你确定热点再哪里再去优化。
你连传参数的效率都考虑,应该去写汇编。
【 在 z16166 的大作中提到: 】
: 经常看到有人写的一个函数有十几个参数,感觉有点bad smell
: 如果把有相关性的几个参数放入到一个struct中,然后传递const struct &,不知道会不会影响编译器优化。
--
FROM 124.72.111.*
首先是smell的问题,其次才是优化之类的考虑
而且既然提出这个问题,说明早就过了通宵赶工发版的阶段,不然谁写100个参数的函数,我也会当作没看见,顶多捏着鼻子看。
【 在 hgoldfish 的大作中提到: 】
: 写代码优先好看。因为程序员看代码的时间比写代码的时间多。再烂的程序员打字速度也能达到 50 w/s. 等你确定热点再哪里再去优化。
: 你连传参数的效率都考虑,应该去写汇编。
:
--
修改:z16166 FROM 114.241.227.*
FROM 114.241.227.*
这是一个古老的问题,我记得有一本书上说,如果一个函数的设计者设计一个包含七个参数的函数,那么过一段时间他一定会发现7个参数还是不够用,boost好多早期的预设宏都是模板特化到7、8个参数的版本。
原则上设计函数的时候不要超过七八个参数,再多就用struct的方式好一些
【 在 z16166 的大作中提到: 】
: 经常看到有人写的一个函数有十几个参数,感觉有点bad smell
: 如果把有相关性的几个参数放入到一个struct中,然后传递const struct &,不知道会不会影响编译器优化。
:
--
FROM 219.143.177.*