我是靠谱客的博主 苹果御姐,最近开发中收集的这篇文章主要介绍C++函数式编程(四)面向对象编程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原文:http://www.altdevblogaday.com/2012/04/26/functional-programming-in-c/

作者:John Carmack


-潘宏 译

-2013年1月

-email: popyy@netease.com

-weibo.com/panhong101



Michael Feathers@mfeathers 面向对象通过封装活动的部分而让代码可理解。函数式编程通过将活动的部分减至最少而让代码可理解。


所谓“活动的部分”就是指变化的状态。在一般的OOP基础书籍中,作者往往开始都会讲如何让对象改变自身,程序员们对此也都记忆犹新。然而,这却是一种反函数式的行为。没错,将函数和它们要操作的数据都打到一起,这种基本OOP思想是很有意义的。但是,如果你希望在代码中加入一些函数式程序,并从中获得优势,你只得在那些地方避免OO行为。


从定义上说,非const成员函数不是纯函数,因为它可能会改变类对象的状态。它也不是线程安全的,很容易让对象不知不觉进入意外状态,成为bug的温床。


const成员函数从技术角度讲是纯函数,前提是不考虑函数中的隐式const this指针可能会被用来改变对象状态。但有些对象很大,以至于自己都可以称得上构成了一个全局环境,这一点削减了一些纯函数的优势。构造函数可以是纯函数,而且最好能做成纯函数-只接受参数然后返回一个对象。


在开发战略级别上,你可以经常以一种更函数式化的方式处理对象,但可能需要改变一些接口。比如在id,我们有个用了十来年的类idVec3,其中包含一个改变对象自身的方法void Normalize(),而不是相应的idVec3 Normalized() const方法。很多字符串方法也只是改变对象自身,而不是返回一个处理结果的拷贝,比如ToLowerCase(),StripFileExtension()等等。

最后

以上就是苹果御姐为你收集整理的C++函数式编程(四)面向对象编程的全部内容,希望文章能够帮你解决C++函数式编程(四)面向对象编程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部