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