面向对象编程是否已淘汰?函数式编程的枪口瞄错了对象

面向对象编程(OOP)自1981年成为主流以来,一直受到批评。然而,它是否已被超越,或者只是在特定场景下显得不足?本文探讨了OOP的封装、继承和多态等核心概念,以及过度使用可能导致的问题,如大猩猩丛林香蕉问题、脆弱的基类问题、钻石问题、层次问题和参考问题。虽然函数式编程在某些领域展现出优势,但OOP仍被广泛使用。开发者应灵活运用各种编程范式,根据问题选择最适合的工具。
摘要由CSDN通过智能技术生成


全文共3838字,预计学习时长10分钟

图源:unsplash

编程在上世纪60年代遇到了一个大问题:计算机那时还没有那么强大,需要以某种方式在数据结构和进程之间分配容量。这意味着如果拥有大量数据,那么在不将计算机推向极限的情况下,很多事情将无法完成。另一方面,如果需要做很多事情,那么就不能使用过多的数据,否则计算机将永远占据空间。

 

接着艾伦·凯(AlanKay)大约于1966年或1967年得出理论认为可以使用封装的微型计算机,这些微型计算机不共享数据,而是通过消息传递进行通信。这样可以更加经济地使用计算资源。

 

尽管这个想法很巧妙,但直到1981年,面向对象编程才成为主流。但是从那以后,它并没有停止吸引软件开发新手和老手。面向对象编程的程序员一如既往的繁忙。

 

但近年来,这一已有十年历史的范式受到越来越多的批评。难道是在面向对象程序设计大行其道40年之后,技术已经超越了这种范式?

 

带数据的耦合函数是否可笑?

 

面向对象编程的主要思想非常简单:尝试将一个程序分解为功能强大的整体。随之而来的是,将数据片段和仅在相关数据上使用的那些函数耦合在一起。

 

请注意,这仅涵盖封装的概念。也就是说,位于对象内部的数据和函数对于外部是不可见的,一个人只能通过消息(通常称为getter和setter函数)与对象的内容进行交互。

 

继承和多态并没有包含在最初的想法中,但是对于当今的面向对象编程而言,这是必需的。继承基本上意味着开发人员可以定义具有其父类具有的所有属性的子类,直到1976年——面向对象的程序设计概念问世十年后,才将其引入。

 

十年后,多态进入了面向对象的程序设计。从根本上讲,这意味着方法或对象可以用作其他方法的模板。从某种意义上说,这是继承的概括,因为并非原始方法或对象的所有属性都需要传输给新实体;相反,可以选择覆盖属性。

 

多态的特殊之处在于,即使两个实体在源代码中相互依赖,被调用实体的工作方式也更像插件。这使开发人员的工作更加轻松,他们不必再担心运行时的依赖关系。

 

值得一提的是,继承和多态性并不是面向对象编程所独有的。真正的区别在于封装数据及其所属的方法。在那个计算资源比今天稀缺得多的时代,这是一个天才般的想法。面向对象的编程并不可笑,它使编码变得容易得多。

 

图源:unsplash

面向对象编程中的五大问题

 

面向对象编程一问世便改变了开发人员查看代码的方式。在1980年代以前,面向过程编程通常以机器为中心,开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值