V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
erse
V2EX  ›  程序员

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

  •  
  •   erse · 2014-11-12 23:32:51 +08:00 · 2799 次点击
    这是一个创建于 3669 天前的主题,其中的信息可能已经有所发展或是发生改变。
    给一个朋友看了自己写的代码,然后说自己是过程式思维,不明白这个过程式思维是怎么回事?然后我现在写的是面向对象的思维,所以我想知道过程化思维和面向对象思维的区别。
    其实说实话,楼主写安卓的,写了五年代码,自认为只是刚刚入门。所以想了解一下,在哪位大牛给解释一下么?谢谢了
    6 条回复    2014-11-13 20:17:03 +08:00
    likuku
        1
    likuku  
       2014-11-13 00:24:57 +08:00   ❤️ 1
    过程化:单线流程,就是做菜那种流程,先干啥后干啥,按部就班依次来,每步骤都事无巨细清清楚楚。

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

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

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

    而函数式,过程式是通过模块,高阶函数,lambda表达式。闭包。实现1和2.
    cover
        3
    cover  
       2014-11-13 00:42:43 +08:00 via Android   ❤️ 1
    过程式思维就是函数式思维吧,和oo不同在于 函数是中心,而oo的话是对象是中心 ,当我们实现一些简单的数学累加的时候用oo思维就需要专门定义一个没有意义的接口 然后用没有意义的类中的一个借口去调用它实现累加,而函数思维就是直接写一个函数然后调用之。因为oo的思维是万物皆是对象,所以当碰到一些特殊无法抽象东西的时候就变得牵强。但是其实万变不离其宗吧
    cover
        4
    cover  
       2014-11-13 00:46:27 +08:00 via Android
    其实oo也可以用函数式思维来实现的,他只是一种编程的思维方式吧。而oo在如果你不在乎牵强性也可以用来做函数做的事情,比如上面说的建立一些没有意义得类。比如我经常用的lua ,看上去很函数,但是不用附加的功能,紧紧用闭包就可以做一些oo的东西,只是比较复杂吧了
    erse
        5
    erse  
    OP
       2014-11-13 13:28:38 +08:00
    @cover
    @watsy0007
    @watsy0007 三位可以分别举个例子么?谢谢了
    cover
        6
    cover  
       2014-11-13 20:17:03 +08:00
    今天详细去解了下 就从 λ 演算(lambda calculus)开始看好了。。。我也在看,和oo完全不是一种编程思维吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1219 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:29 · PVG 02:29 · LAX 10:29 · JFK 13:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.