想知道过程化思维和面向对象思维的区别

2014-11-12 23:32:51 +08:00
 erse
给一个朋友看了自己写的代码,然后说自己是过程式思维,不明白这个过程式思维是怎么回事?然后我现在写的是面向对象的思维,所以我想知道过程化思维和面向对象思维的区别。
其实说实话,楼主写安卓的,写了五年代码,自认为只是刚刚入门。所以想了解一下,在哪位大牛给解释一下么?谢谢了
2686 次点击
所在节点    程序员
6 条回复
likuku
2014-11-13 00:24:57 +08:00
过程化:单线流程,就是做菜那种流程,先干啥后干啥,按部就班依次来,每步骤都事无巨细清清楚楚。

对象化:看看3次元真实世界吧,都是对象,每个对象都有属性有特有的方法,很多对象也可以按相同/近似的属性方法划为同一类。
watsy0007
2014-11-13 00:31:52 +08:00
看你用的是什么语言,什么框架,自己的代码风格是什么样。
一般代码风格不好。分层思想不清晰。
把面向对象的语言和框架用的线性的函数嵌套调用。。说好听点是过程式函数式,说不好听点是写的太差。。

编程主要处理的是2块。
1:数据的隐藏,抽象
2:代码的抽象

面向对象里面处理是通过绑定数据和方法。
通过方法操作数据,实现1.
通过继承,多态,实现2.

而函数式,过程式是通过模块,高阶函数,lambda表达式。闭包。实现1和2.
cover
2014-11-13 00:42:43 +08:00
过程式思维就是函数式思维吧,和oo不同在于 函数是中心,而oo的话是对象是中心 ,当我们实现一些简单的数学累加的时候用oo思维就需要专门定义一个没有意义的接口 然后用没有意义的类中的一个借口去调用它实现累加,而函数思维就是直接写一个函数然后调用之。因为oo的思维是万物皆是对象,所以当碰到一些特殊无法抽象东西的时候就变得牵强。但是其实万变不离其宗吧
cover
2014-11-13 00:46:27 +08:00
其实oo也可以用函数式思维来实现的,他只是一种编程的思维方式吧。而oo在如果你不在乎牵强性也可以用来做函数做的事情,比如上面说的建立一些没有意义得类。比如我经常用的lua ,看上去很函数,但是不用附加的功能,紧紧用闭包就可以做一些oo的东西,只是比较复杂吧了
erse
2014-11-13 13:28:38 +08:00
@cover
@watsy0007
@watsy0007 三位可以分别举个例子么?谢谢了
cover
2014-11-13 20:17:03 +08:00
今天详细去解了下 就从 λ 演算(lambda calculus)开始看好了。。。我也在看,和oo完全不是一种编程思维吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/146029

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX