比我更资深、更有经验和受过更好教育的程序员告诉我,应该避免在c中使用函数指针。我已经看到一些代码包含函数指针作为不重用该代码的理由这一事实,即使唯一的选择是完全重新实现也是如此。经过进一步讨论,我无法确定为什么会这样。我很乐意在适当的地方使用函数指针,并且喜欢它们允许您做的有趣而强大的事情,但是我是否在使用它们时将谨慎抛诸脑后?
我看到函数指针的优缺点如下:
优点:
- 代码模块化的绝佳机会
- 非 OO c 中的类 OO 特性(即同一对象中的代码和数据)
- 你还能如何合理地实现回调?
缺点:
- 对代码可读性的负面影响 - 调用函数指针时实际调用的函数并不总是很明显
- 与直接函数调用相比,性能损失较小
我认为 Con #1. 通常可以通过精心选择的符号名称和良好的评论来合理地缓解。而Con #2. 一般不会有什么大不了的。我是否遗漏了什么——还有其他原因可以避免像瘟疫这样的函数指针吗?
这个问题看起来有点讨论,但我正在寻找为什么我不应该使用函数指针而不是意见的充分理由