谈谈面向对象编程和面向过程编程

文章探讨了面向对象编程和面向过程编程的优劣,指出两者并无绝对好坏,而是取决于项目需求和复杂度。面向对象适合复杂项目,而面向过程在效率和资源敏感场景下更有优势。初学者难以理解面向对象的优势可能是因为复杂度并未减少,而是转移。文章强调灵活运用不同编程思维,视情况选择最佳工具。
摘要由CSDN通过智能技术生成

一.两种编程思维孰优孰劣?

初学者在听到面向对象和面向过程编程一定会想,哪个更好一点,哪个好我就学哪个。其实任何编程方法,都没有所谓的好坏。就好比,交通工具,你说小轿车就一定比摩托车好用,摩托车就一定比自行车好用。我们要看场景,看实际用途。对于短途一两公里,我倒觉得骑自行车很是方便,健身还环保,而对于再稍微远点,我们可以选择摩托车,再有超过十公里,这时候,小轿车会更快更舒服。当然还要取决于你在什么路况上行驶。乡间小道,汽车无法通行,那就用不了了。所以我们不能说只要出门不管去哪都是开车好。抛开实际使用范围都是不切实际的。我们要做到根据不同路况,不同路程,甚至不同心情选择不同的交通工具。

所以呢,再回到上面说的面向对象编程和面向过程编程到底哪个好呢?答案是不能一概而论,对于项目大,功能复杂,需求灵活多变,我们就需要使用面向对象的编程方式会更合适。而对于功能不是很复杂,运行效率要求高,硬件资源比较敏感,我们就可以考虑面向过程编程。

二.两种编程思维的区别是什么?

简单点,以我前面一篇文章讲的信号灯为例,要实现闪烁的功能

面向过程的实现方式

面向对象的实现方式

当需要不同的闪烁频率,或者不同的闪烁方式,面向过程的就需要改变其整个流程,面向对象则需要添加或修改对应的方法,然后调用,整个框架不需要改变。

为啥初学者很难get到面向对象好的点?

在网上说的最多的就是面向对象如何如何好,比如可维护,可扩展,灵活性高,可重用,实际情况确实如此,但作为初学者,我们很难get到这个点。为什么会这样,以我自己的经历来看,主要原因可能如下:

有的同学或者听说过“‘面向对象’的设计能够降低复杂度”……但实际上,并没有。业务逻辑的复杂度永远是不可能降低的,除非你改需求;需求就是那样了,所以复杂度就在哪里了,你怎么降低?无论是面向对象,还是设计模式,和不面向对象编程(面向过程编程)相比,其本质是把复杂度转移到类的关系复杂度上。

所以经验不足的同学,体会不够深,该干的活一点没少干,然后做的项目也不是很大,发挥不出面向对象的威力。

再总结一句话:面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们我们使用的就是面向对象了。

谈谈我的思考

我们不能把任何东西神话,觉得面向对象就是最好的,面向过程就是落后的。整个计算机的发展,编程语言的出现,都是为了解决问题,不断迭代出新的东西,之所以出现面向对象,就是为了解决面向过程不好处理的问题,但面向对象离不开面向过程,以后可能还会出现其他编程思维,解决现阶段无法解决的问题。这些都是工具,供我们使用,我们要做的就是灵活切换,不同场景使用不同工具,达到最优解。这里我也没有讲具体哪些编程语言,因为没必要,只讨论思维和方法层面的。语言更是工具类底层的东西。

本文章更多的是在讨论大家如何看待这两种编程思维的态度问题。重点没有去触及具体的技术层面的讲解。若大家对我的想法有异议,完全正常,不必纠结,这本来就是一家之言而已。倘若对初学者有所帮助,那便最好不过了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值