||
函数式编程也是一种面向过程的编程范式,主要变化在于把重要的功能逻辑通过函数进行封装,以便重复调用,同时也提高了代码的维护性。其优点就不赘述了,缺点除了牵一发而动全身外(函数的定义发生变化,至少调用它的每个地方都要随之改变),对于较为复杂的应用场景,遇到多个函数需要传递共同的参数时,你就会觉得写起来真是麻烦又啰嗦。如果要实现一个数据库连接查询修改的程序,数据库的连接参数是共性参数,如果根据数据库增删改查的不同分别定义函数,数据库连接参数就要重复多次,而如果通过一个函数来定义并区分,你还得各种if去判断要执行的sql到底属于哪一种。
总之函数式编程不是**的,有时候虽然能实现结果,但实现的过程可能比较曲折。
面向对象
核心是对象二字,(要理解对象为何物,必须把自己当成上帝,上帝眼里世间存在的万物皆为对象,不存在的也可以创造出来。面向对象的程序设计好比如来设计西游记,如来要解决的问题是把经书传给东土大唐,如来想了想解决这个问题需要四个人:唐僧,沙和尚,猪八戒,孙悟空,每个人都有各自的特征和技能(这就是对象的概念,特征和技能分别对应对象的数据属性和方法属性),然而这并不好玩,于是如来又安排了一群妖魔鬼怪,为了防止师徒四人在取经路上被搞死,又安排了一群神仙保驾护航,这些都是对象。然后取经开始,师徒四人与妖魔鬼怪神仙交互着直到最后取得真经。如来根本不会管师徒四人按照什么流程去取),对象是特征与技能的结合体,基于面向对象设计程序就好比在创造一个世界,你就是这个世界的上帝,存在的皆为对象,不存在的也可以创造出来,与面向过程机械式的思维方式形成鲜明对比,面向对象更加注重对现实世界的模拟,是一种“上帝式”的思维方式。