中国大陆的编程Myth (1)

面向对象的三大特征:封装、继承、多态。

— Almost all Mainland Chinese programmer ever

我不知是谁最先提出这个说法的,但是这个说法有非常严重的问题:它的逻辑在根本上是反的。「封装」和「多态」不是「面向对象」的“特征”;「面向对象」是用于完成封装和多态的对策之一(which in terms 是对抗程序复杂性的对策之一)。「继承」也根本不是“面向对象”的专属:在支持函数一等公民的语言里,如果我需要同样的行为,把函数本身传过去就是了;我确确实实地继承了行为,但是在这之中“面向对象”又在哪里呢?很多人会说,A是B的特征不等于A为B独有,“函数式编程”也有这些特征;这是当然的,因为根本就不是「它有这个特征」,而是「它为这个目的而这样」。

就像我在另外一篇博客里讲过的一样,「面向对象」这个词能够用来描述某些东西不代表它就是个合格的predicate;但这件事又跟这个myth本身没什么关系了。

发表评论

您的电子邮箱地址不会被公开。