架构师之路(1)---面向过程和面向对象
1、引言
机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做得到。但是,会编程和编好程绝对是两码事,同样的程序员,有的人几年之后成为了架构师,有的人却还在不停地coding,只不过ctrl-c、ctrl-v用得更加纯熟了。在中国,编程人员最终的归途无外乎两条:一是转向技术管理,它的终点是CTO;二是继续深入,它的终点是首席架构师,成为CEO的人毕竟是少数。如果你现在还是个普通的程序员,希望继续在技术这条路上前进的话,我想你还是应该先补充一点软件工程的思想,学习一点有关设计模式的知识,只有具备这些能力,你才能从整体和宏观层面来考虑问题、分析问题和解决问题。本人Coding了很多年,中间走了不少弯路,虽然最终没什么大成就,但总算有一些心得,很愿意把自己的一些经验拿出来跟大家分享,这或许对你的发展有所帮助。
由程序员转为架构师,最绕不开的概念就算是面向对象(OO)了。记得在大学的时候,我们专业开了一门课叫《面向对象的编程》。那个时候,我们刚刚学了一门C语言,开发环境用的还是DOS下的Turbo C,半点项目开发的经验都没有,纯粹的空对空。所以,一学期下来,我始终处于一种懵懂状态,既没领会面向过程和面向对象到底有什么区别,也没搞懂面向对象能带来什么好处。
2、面向过程(OP)和面向对象(OO)
2.1 蛋炒饭和盖浇饭
有人这么形容OP和OO的不同:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。
蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。
蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。
到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。
2.2 软件工程
盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭”和“菜”的耦合度比较低。蛋炒饭将“蛋”“饭”搅和在一起,想换“蛋”“饭”中任何一种都很困难,耦合度很高,以至于“可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。
面向过程(OP)和面向对象(OO)是不是就是指编码的两种方式呢?不是!你拿到了一个用户需求,比如有人要找你编个软件,你是不是需要经过需求分析,然后进行总体/详细设计,最后编码,才能最终写出软件,交付给用户。这个过程是符合人类基本行为方式的:先想做什么,再想如何去做,最后才是做事情。有的同学说:“我没按照你说的步骤做啊,我是直接编码的”。其实,你一定会经历了这三个阶段,只不过你潜意识里没有分得那么清楚。对于拿到需求就编码的人,可能编着编着,又得倒回去重新琢磨,还是免不了这些过程,
以OO为例,对应于软件开发的过程,OO衍生出3个概念:OOA、OOD和OOP。采用面向对象进行分析的方式称为OOA,采用面向对象进行设计的方式称为OOD,采用面向对象进行编码的方式称为OOP。面向过程(OP)和面向对象(OO)本质的区别在于分析方式的不同,最终导致了编码方式的不同。
2.3 面向过程(OP)和面向对象(OO)
转载于:https://www.cnblogs.com/springMVC/archive/2009/03/06/2204463.html
架构师之路(1)---面向过程和面向对象相关推荐
- 架构师之路---面向过程和面向对象 王泽宾
1.引言 机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训 ...
- 架构师之路-写的不错
架构师之路 转:http://www.uml.org.cn/zjjs/200903273.asp 1.引言 机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用 ...
- 程序员养成架构师之路
原文:5ceo:洒落一地的阳光 .的---><程序员养成架构师之路> 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是 ...
- 架构师之路 扩充字段_扩大您作为设计师的业务影响力的四个基础
架构师之路 扩充字段 While catching up with my designer friends during these days of quarantine, a common topi ...
- java架构师之路:JAVA程序员必看的15本书的电子版下载地址
java架构师之路:JAVA程序员必看的15本书的电子版下载地址 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一 ...
- python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议
一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...
- 随手笔记:我的架构师之路--沈剑 到家集团技术委员会主席快狗打车CTO
同学也不太懂开发,他可能觉得我懂"开发",然后正好看着了这个讲座,就把讲座推荐给我看看了. 虽然我不准备做架构(或者说不太了解),但是同学一片好心,我正好也有精力,就看看,记记笔记 ...
- .NET 高级架构师0003 架构师之路(2)---架构师的职责
2 架构师的职责 近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎.我怀着无比崇敬的态度,拜读了一下牛人们的发言.里面有个哥们发起一个话题:"CTO, 你多久没有写程序了?&q ...
- Android从程序员到架构师之路3
本文学习自高焕堂老师的Android从程序员到架构师之路系列教学视频 40 - 认识线程(Thread)模式a 1. 线程(Thread)概念 所谓线程(Thread) 是指一串连续的执行动作,以达成 ...
最新文章
- 计算机桌面窗口移动有虚影,win7系统桌面出现残影影响心情?一招帮你解决问题...
- JS 版的pnp in_array($str,$arr)
- golang处理kill命令总结
- nginx+keepalived搭建主从负载均衡并迅速切换
- bakaxl启动器怎么导入整合包_bakaxl启动器加皮肤光影mod
- 什么是编程语言,大神教你为什么要学C语言?
- CSS进阶(五)border
- OpenCV(Open Source Computer Vision Library)简介
- hash 表 java_java hash表
- jQuery Tips(5)----关于伪类选择符
- 住房贷款等额本息(等额本金)还款计划计算
- 【腾讯TMQ】众测白皮书
- Halo-dream 博客小程序
- html5拼图游戏canvas,canvas拼图游戏
- 连续潜在变量---主成分分析
- csgo笔记本党设置4:3画面
- 示波器探头x10、x1挡位
- 机器学习(十六)推荐系统
- iphone快捷指令蚂蚁森林能量_如何快速偷取蚂蚁森林能量?这有一个捷径!-芒果TV专栏...
- 哈尔滨联通java_哈尔滨联通套餐资费-哈尔滨联通套餐资费介绍2021【哈尔滨集号吧】...
热门文章
- 前端和后端哪个工资高_前端、后端、全栈都是干嘛的?哪个薪资高?
- Codeforce1311B. WeirdSort (冒泡排序)
- 图论--边双连通V-DCC缩点
- SQL查询中having和where的异同点
- Error(s) in loading state_dict for ResNet 问题解决
- kernel并发控制:自旋锁、互斥体、中断屏蔽
- 欢迎使用CSDN-markdown编辑器test
- 南京大妈捡钻石项链要求分一半,失主跪求归还遭拒
- 新版征信对信用卡养卡会有重大影响吗?
- 孙甘露:小说是他的女人,写作是他爱女人的过程