« 上一篇下一篇 »

面向过程编程存在的问题

面向过程编程是将程序分成“数据”和“处理函数”两部分,程序以“处理函数”为核心,如果要执行什么操作,就将“数据”传给相应的“处理函数”,返回我们需要的结果的编程方式。

    面向过程的思路很好掌握,上手容易。但它存在三方面的问题。

    1、数据和处理函数没有直接的关联,在执行操作的时候,我们不但要选择相应的处理函数,还要自己准备处理函数需要的数据,也就是说,在执行操作时,我们需要同时关注处理函数和数据。

    2、数据和处理函数都暴露在同一作用域内,没有私有和公有的概念,整个程序中所有的数据和处理函数都可以互相访问,在开发阶段初期也许开发速度会很快,但到了开发后期和维护阶段,由于整个程序耦合得非常紧,任何一个处理函数和数据都有可能关联到其他地方,容易牵一发而动全身,从而加大了修改难度。

    3、面向过程的思维方式是典型的计算机思维方式——输入数据给处理器,处理器内部执行运算,处理器返回结果。而实际生活中,我们的思路却不是这样——实际生活中所有的东西都是有状态和动作的物件,例如笔者就是实际生活中的一个客观事物,我有“姓名”,我叫“阿当”,我有“状态”,我现在是“醒着”的,我有动作,我可以说话,向人介绍我的“姓名”,我可以去睡觉,如果睡着了我的“状态”就由“醒着”变成“睡着”。如果要用面向过程思维来描述我,是很难做到的,因为面向过程的思维方式是在描述一个个“动作”,有动作的起点(初始数据),有动作的过程(初始数据传给处理函数进行处理),有动作的终点(处理函数返回处理结果),而客观世界中存在的是一个个“物件”,物件有状态,有动作,物件本身只是一个客观存在,它没有起点,没有终点。能用面向过程思维描述的只是物件的动作,例如我开始睡觉(起点),意识逐渐模糊(过程),睡着了(终点)。用面向过程的思维方式编程,是无法描述客观世界的事物的,我们编程的时候无法直接使用生活中的思维方式。

« 上一篇下一篇 »