面向过程到面向对象再到面向函数

@(朝天吼python技术)

关注最基本的实现方法,面向过程

拿到问题,识别输入输出,脑海里先产生一个实现输入到输出的大致思路。 如果这个开始按着思路去实现代码,就会写出一堆处理过程,这个时候,程序只有原始的输入输出和中间过程数据结构和一堆处理过程,如果把处理过程再分类处理一下变成各种模块(一些语言里叫做过程sub,一些语言里也叫做函数func)

关注数据和过程的有效管理,面向对象

为了实现各种过程,中途有一大堆的数据,首先暴露的问题就是数据是混乱的 ,这个时候,另一种编程设计思想就出来了,面向对象。

面向对象把各种实际问题中的实体映射成一个对象,对象里封装模拟实体店数据和动作(方法),动作也是一个过程。多个对象在程序里各自封装业务上好理解的数据,用接口(对外暴露出来的方法)互相交互,来完成任务。为了一些处理的中间环节,可能会虚拟出一些非实体店中间对象来辅助。

面向数据和过程的确定性,函数式编程

数据看起来好一点了,这时又有一些新的问题,对象里的方法也是一个处理过程,对外服务时可能涉及外部IO等交互操作,会产生不在预料中的问题,对内会修改数据,数据被其他人使用时也产生了不确定性。

于是需要把数据和过程按照确定性来分类,把不确定性的容易产生问题的单独归类。数据确定性就是不可变对象,数据无法被修改,过程的确定性就是函数式编程,每次给相同的参数总能返回固定的值,不回因为外部io变化,或者是依赖的数据被修改,而产生了不一致的值。 这就是函数式编程

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java学习

java每日一练(2017/8/9)

最新通知 ●回复"每日一练"获取以前的题目! ●【新】Android视频更新了!(回复【安卓视频】获取下载链接) ●【新】Ajax知识点视频更新了!(回复【学习...

2878
来自专栏iOS 开发

iOS 代码使用 C++ 的 zero-cost abstraction 特性

1993
来自专栏前端黑板报

Vue列表循环从指定下标开始

最近遇到一个问题,在循环商品列表时,因为数组的第一个是商品的品牌介绍,所以循环时不能直接循环,只能从第二个元素开始。

1.5K3
来自专栏JetpropelledSnake

Python入门之实现简单的购物车功能

Talk is cheap,Let's do this! product_list = [ ['Iphone7 Plus', 6500], ['...

4286
来自专栏养码场

若你想入职面试阿里系公司,不妨看看这位资深Java的面试经

上上周分享了占小狼面试阿里系的面经文章:《一位资深Java的阿里系公司实战面试经验,套路还是面试官的多》 ,蛮受大家欢迎的。看到大家在社群里的好评与点赞,占小狼...

2022
来自专栏Java学习网

编程的智慧特点

  编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋...

3366
来自专栏知识分享

3-学习GPRS_Air202(需要知道的关于Lua的一些基本的知识)

1965
来自专栏瓜大三哥

HLS Lesson20-实例分析

1.改善吞吐率:本质是通过改善并行度实现的 ? 当pipeline作用于函数的时候,从IO角度来看数据是没有空隙的,而作用于循环时候,则相邻的两个循环之间会有一...

2116
来自专栏数据结构与算法

P2002 消息扩散

题目背景 本场比赛第一题,给个简单的吧,这 100 分先拿着。 题目描述 有n个城市,中间有单向道路连接,消息会沿着道路扩散,现在给出n个城市及其之间的道路,问...

38110
来自专栏web前端教室

a=b=c,但a不等于c?这是什么鬼

昨天在网上乱翻资料,发现一道题,很有意思,是这样婶的, var a = {n:1}; a.x = a = {n:2}; console.log(a.x); 答案...

2705

扫码关注云+社区

领取腾讯云代金券