爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 15715|回复: 6

[经验总结] [已收纳]愚见:面对对象编程的起源与内涵

[复制链接]

新浪微博达人勋

发表于 2020-9-28 16:20:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 15195775117 于 2021-1-27 09:42 编辑

1、面对对象的起源:
以前我很少使用“面对对象”,直到后来接触软件、web,发现这里的东西都以“对象”的形式存在。
为什么会有“面对对象”这种方法?
以做PyQt界面为例,主体结构早已给你定好了:一个主界面+N个控件,控件(如按钮)会有大小、颜色、文本等属性,点击它会产生效果,即响应函数,这不用查询都知道。
所以,面对对象的使用前提是已经存在了一个框架,你了解了其构成与相互关系,然后自己再DIY。
那为什么我之前不知道面对对象的价值呢?
因为我的工作是数据处理,主要是做计算,计算流程都是逐渐摸索才形成的,也就是说一开始没有固定框架,自然也就没有对象了。但是,我的计算步骤一旦形成固定套路,就有了框架,也就有了一堆对象了,也有可以面对对象了。
现在的软件、web、app、前端开发都是有框架的,游戏开发是用引擎的,所以流行面对对象。
2、面对对象的思维方式:
面向过程和面向对象的思维方式和解决问题的方法有着很大的差异——
【面向过程】解决问题的思路是算法或流程,你会把它想像为一条流水线,或者把自己看作亲力亲为的CPU。
而【面向对象】着重于机制的建立,你可以把目标系统想像成一台由许多零件构成的机器,或者一个良好运转的组织。
所以,对于一个面向过程的程序,你需要理解的是事物处理过程或算法步骤,每个过程都是无状态的,只有输入和输出(对于全局或静态变量的访问是面向过程的副作用)。
当你试图了解某个机构一个具体事务流程的时候,最高效的方法肯定是先了解它的组织架构,了解每个部门职责,以及部门之间的关系。在此基础上,再去理解一个具体事务的流程时,就会容易理解的多。反之,在你不了解组织架构的情况下,一上来就直奔一个具体事务,你可能更加希望一个部门,甚至一个人就把所有的事情都做了;拿着一份文件在各个部门之间穿梭盖章,肯定会让你非常困扰和厌烦。
3、面对对象更高端吗?
一般大家开始编程都是从面对过程开始的,面对对象的编程方法后来才接触,觉得比较高级。
但实际上,面对对象并没有那么美。
面对过程写得差是“面条代码”,面对对象写得差是“馄饨代码”:
把面条代码重构为馄沌代码只是把一个问题变成了另外一个问题 ,馄饨代码相对于面条代码,更加难以理解和跟踪。在面条代码中,一个大函数尽管复杂,却完整的描述了整个过程或算法的所有细节。但在【馄沌代码】中,这些过程和细节被拆分的支零破碎,分散到不同的类和方法中,为了理解一个过程或算法,必须在类和方法间跳来跳去,如果有多态存在,你都不知道到底是哪个子类的相关方法被执行。
保持一颗追求简洁的心,无论面对过程还是对象都可以写出好代码。
不要崇拜那些动辄写上万行代码的人,写代码相当于写文章,简明易懂才是上乘,罗里吧嗦都是垃圾。
为了提高可理解性,增加些变量和代码是值得的。

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-9-29 10:31:13 | 显示全部楼层
虽然现在看不太懂,但是感觉很厉害,赞
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-29 10:57:02 | 显示全部楼层
95niande77 发表于 2020-9-29 10:31
虽然现在看不太懂,但是感觉很厉害,赞

谢谢,多多交流,提升技能
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-10-23 00:49:36 | 显示全部楼层
在大气科学数据处理和画图方面怎么应用比较好呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-10-23 08:47:52 | 显示全部楼层
Asofhknok 发表于 2020-10-23 00:49
在大气科学数据处理和画图方面怎么应用比较好呢

计算是面对过程,画图是面对对象,因为计算过程是完全DIY的,没有固定形式,而画图是有固定模式的,matplotlib、matlab、IDL、JavaScript...所有画图语法都是类似模式
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-10-29 10:48:49 | 显示全部楼层
15195775117 发表于 2020-10-23 08:47
计算是面对过程,画图是面对对象,因为计算过程是完全DIY的,没有固定形式,而画图是有固定模式的,matpl ...

也就是把画图的一堆命令自己封装一下吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-10-29 10:53:25 | 显示全部楼层
Asofhknok 发表于 2020-10-29 10:48
也就是把画图的一堆命令自己封装一下吗

已经封好了,你直接照葫芦画瓢学着画即可,不必细究面对对象还是面对过程这种理论
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表