函数"乱"谈

不管是面向过程还是面向对象。软件开发中,我们都不能脱离“函数”。

什么是函数?不同的人有不同的理解。下面我就谈谈我的理解:

y=f(x)这就是函数。x是参数,y是函数的返回结果,f是函数名。软件开发中,我们也是这样用的。如果没有x,那就是无参函数;没有f,那就是匿名函数;没有y,那就是带副作用的函数(函数式编程中,认为返回void的函数是带副作用的函数)。如果,x,f,y都没有,那就是个空函数。

面向对象中,站在对象自身的角度,一个对象拥有了函数才拥有了行为。站在总体系统的角度,一个对象的函数就是他能够提供的服务。一个没有函数的对象,往往代表某一种值,所以称为值对象,这种对象只拥有getter/setter方法。之所以没有公开属性,而是提供getter/setter方法,一个比较重要的原因是可以将对于对象属性的查询和修改权限分离。不可小看getter/setter方法,因为它代表了函数的两种基本类型:一类函数是用于改变状态的setter型函数,另一类是用于查询状态的getter型函数。一个没有属性,只有函数的对象,往往是对外提供的一些工具对象,无状态的对象只提供服务,而且不会有多线程并发问题。真是广大人民群众喜闻乐见的一种方式,可是又被面向对象的大师批判为打着面向对象的旗号干着面向过程的勾当。由此,面向对象的函数式编程,成了现在比较热的话题。很多新兴的语言也都基于此发展起来。

函数式编程将函数视为第一类对象。他们是一等公民,拥有千变万化的身份。它可以是服务,可以是参数,甚至可以是返回值。这种编程方式以去掉所有变量,去掉函数副作用为目标。为未来的多核计算,云计算做准备。

其实这些概念早在很久以前就已经存在了。但是历史就是这样螺旋上升式的发展,我们总能在最新的技术中看到历史的影子。

关于函数的话题,先胡说到这吧。回家了!!~~~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值