最近,我开始在头文件中添加越来越多的函数,主要是为了方便。但我担心我可能做得太过了,我的头充满了包含,我不确定这是否是一个好主意。
将函数从头文件移出或移到头文件时,您的经验规则是什么?
如果您想知道,我说的是开发应用程序,而不是库。
编辑:
我想,从我的角度概述内联(自然)头函数与实现函数的优缺点是有帮助的:
Pro内联:
更多的clean/concise.
Contra内联:
根据这一点,将几乎所有函数都放在标题中似乎是个好主意,我相信这与STL和Boost的功能非常接近(尽管它们是库,而不是我的代码)。
发布于 2011-05-20 06:38:13
我最不能违反的规则之一是:头文件中只允许内联的函数体。其他任何东西都是在链接阶段使用多个定义来自找麻烦。
标题应该主要留给声明而不是定义。我对该规则有例外(作为灵活的类型),但它们中没有一个涉及非内联函数体。
发布于 2011-05-20 06:41:11
我的经验法则是“除非你必须这样做,否则不要在头上。”至于方便,你觉得增加编译时间方便吗?
发布于 2011-05-20 08:37:53
有几个明显的技术方面-模板和内联函数必须在标题中--来自多个翻译单元的标题必须对一个定义规则保持警惕--更直截了当地说,您甚至想要有一个非常好的理由来考虑将一个越线函数实现放在一个标头中,而且我甚至想不出有什么时候我会被诱惑。
因此,问题归结为:
头文件中的内联与实现文件中的越线?
因素:
您说您正在设计应用程序级代码而不是库,因此您不必(目前)担心其他团队依赖于您的代码,也不需要通过将实现保持在private行之外来最小化它们重新编译的需要(而不是重新链接),但是如果您正在编写的好代码可能会对其他团队有用,那么您可能会发现自己希望保持实现
。
一句话:如果你发现自己做的越来越多,那么它显然是对你有用的,没有什么特别的理由认为你会被烧死。注意潜在的问题,但不要在一些假设的、不太可能成为现实的担忧的基础上过度设计一些东西。
https://stackoverflow.com/questions/6068292
复制相似问题