LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

“面向对象”对比“函数”编程的优势在哪里?

admin
2025年10月9日 11:5 本文热度 103

又看到网上有人聊这个话题,不禁手痒,也分享下自己的看法。

一、相同点

看过不少人说,面向对象的优势在于它可以基于对象实现对复杂系统的分解,以及模块的复用,从而降低开发的难度,提升开发的效率。

可是基于“函数”的开发又何尝不是如此呢?

函数一样可以基于函数拆解大型的复杂系统进行开发,以及实现逻辑的复用,也是一样会降低开发难度,提升开发效率。

所以,同样是分解大型复杂系统,基于“对象”的分解和基于“函数”的分解有何不同呢?前者又比后者“先进”在哪里呢?

二、优势

在笔者看来,“对象”对比“函数”的优势主要体现在两个方面。

一个是对象的分解除了逻辑之外,还是包含“状态”的,而函数则是“纯逻辑”分解。

另一方面则是,对于“对象”的维护升级可以基于“开闭原则”进行,而函数无法做到。

三、状态拆分

对象比函数多拆分了一个“状态”又有什么好处呢?

因为一个系统不可能只是由纯粹的逻辑构成,它一定还是包含着很多状态的。

传统的函数只是单纯的接收输入然后返回输出,之后全部的局部变量都会被回收,本质就是没有状态。

函数没有状态,于是就只能依靠全局变量来管理状态。

然后我们就会发现,系统在逻辑上虽然基于函数被分解了,但又因为“状态”全部被挂载在“全局变量”上而又“缠绕耦合”在一起。

而“对象”则解决了上述问题,其将原本堆在一起的用以保存状态的全局变量,全部以“属性”的形式分解封装在各个相关的对象之中。

这就实现了对系统的真正的彻底的分解,不光分解了逻辑,还分解了状态,不再有“藕断丝连”。

四、开闭原则

面向对象支持开闭原则意味着其可以在不修改旧代码的情况下,实现对旧代码的升级。

具体来说就是使用“继承”的方式,让新类扩展旧类,能用的方法直接复用,想要改的基于“多态”重写,而要新增的功能则直接添加。

新类虽然继承旧类,但其逻辑却完全不会对旧类产生影响,从而实现系统的稳健迭代。

也许有人觉得函数也差不多吧,想要迭代一个旧函数,怕影响旧代码完全可以复制粘贴一个副本出来进行编辑吧?

这里的不同在于,基于“继承”的扩展相比基于“函数副本”的扩展心智负担要低得多。

面向对象基于“继承”机制的开发本质是一种“面向接口”开发。

在面向接口的开发中,程序员不必关心旧类的功能具体是如何实现的,他只用关心那些方法具体叫什么名字,实现了什么功能即可。

而基于一个函数副本的二次开发,则要求程序员起码要搞清楚旧的功能是如何实现的,需要进入到实现细节中,否则根本没法下手。

这就导致基于函数的代码迭代相比基于对象的迭代,在开发的心智负担方面有了大大增加。

-END-

该文章在 2025/10/9 11:05:59 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved