在他的演讲"编程的未来"中,Robert Martin提到了结构化,函数式和面向对象范式的动机:
- 结构化编程:不要使用无拘无束的
goto
; - 函数式编程:不要使用赋值;
- 面向对象编程:不要使用指向函数的指针。
但是他提到的OOP背后的动机让我感到困惑。为什么 C# 作为一种面向对象的语言,有委托(据我理解是函数指针(?
如果 OOP 本质上就是避免指向函数的指针,那么它们有什么问题呢?
我认为这是对面向对象的错误陈述,可能只是为了戏剧效果。
面向对象的最大实现是:
- 隐藏数据
- ,提供功能(封装、数据隐藏(
- 告诉,不要问(消息传递(
- 内聚力强,耦合性弱
- 等。
这些都没有特别禁止指向技术上功能的指针。他的意思是,OO中不应该有"静态"函数,所以显然不需要指向"静态"函数的指针。这对我来说听起来很牵强...
总结:我不知道,但听起来不对。