为什么OO是糟糕的?
有Erlang的创建者 Joe Armstrong发表的一篇可能比较极端的文章:Why OO Sucks。
下面意译一下:
当我第一次引入到面向对象的想法,我是持怀疑态度,但不知道为什么 - 它只是觉得“错误”。当OOP开始流行时,更喜欢批评OOP,而不是在教堂里发誓那样虔诚。
Erlang是OO吗?不完全不是。下面列出反对理由:
反对1.数据结构和函数绑定在一起。
数据结构和函数行为属于不同世界。
函数Functions是做事情,他们有输入输出,输入输出是数据结构,获得由函数发生的变化,在大部分语言中函数风格是:: "做这个然后在做那个...",为了理解函数,你得理解他们执行的顺序。
数据结构不是做事情,它们是事物本质描述,理解一个数据结构比较容易理解函数。
函数是作为一个黑盒子去理解,有输入输出,如果我懂得了输入输出,我就了解了这个函数,这并不意味着我曾经写过这个函数。
函数是通过观察来理解的,他们是实现数据结构T1到T2转换的工作。
因为函数和数据结构完全不同,所以不能把他们强行锁定在一个对象边界内。