写代码要经历下面几个阶段。

   一 、你必须学习面向对象的基础知识,如果连这个都忘了,那你的编程之路注定是在做原始初级的重复!

很多程序员都知道类、方法、抽象类、接口等概念,但是为什么要面向对象,好处在哪里,要解决什么问题?只是明白概念,就是表达不清楚,然后在实 际工作中也用不上,过了一段时间,面向对象的东西又模糊了,结果是大多数程序员用着面向对象的语言做着面向过程的工作,因此要学习面向对象,首先应该明白 面向对象的目的是什么?

面向对象的目的是什么?

开发语言在不断发展,从机器语言,到汇编,到高级语言,再到第四代语言;软件开发方法在不断发展,从面向过程,面向对象,到面向方面等。虽然这些都在不断发展,但其所追求的目标却一直没变,这些目标就是:

1. 降低软件开发的复杂度

2. 提高软件开发的效率

3. 提高软件质量:可维护性,可扩展性,可重用性等。

其中语言的发展,开发方法的发展在1,2两条上面取得了极大的进步,但对于第3条,我们不能光指望开发方法本身来解决。

提高软件质量:可维护性,可扩展性,可重用性等,再具体点,就是高内聚、低耦合,面向对象就是为了解决第3条的问题。因此要成为一个好的程序员,最绕不开的就是面向对象了。 可以500%提高开发效率的前端UI框架!

   二、 要想学好面向对象,就必须学习设计模式。

假定我们了解了面向对象的目的,概念了,但是我们coding过程中却发现,我们的面向对象的知识似乎一直派不上用场,其实道理很简单,是因为 我们不知道怎么去用,就像游泳一样,我们已经明白了游泳的好处,以及游泳的几种姿势,狗刨、仰泳、蛙泳、自由泳,但是我们依然不会游泳。。。。

因此有了这些基本原则是不行的,我们必须有一些更细的原则去指导我们的设计,这就有了更基础的面向对象的五大原则,而把这几种原则更详细的应用 到实际中来,解决实际的问题,这就是设计模式。因此要学好OO,必须要学习设计模式,学习设计模式,按大师的话说,就是在人类努力解决的许多领域的成功方 案都来源于各种模式,教育的一个重要目标就是把知识的模式一代一代传下去。

因此学习设计模式,就像我们在看世界顶级的游泳比赛,我们为之疯狂,为之着迷。

   三、学习设计模式

正像我们并不想只是看别人表演,我们要自己学会游泳,这才是我们的目的所在。

当我们看完几篇设计模式后,我们为之精神振奋,在新的coding的时候,我们总是想努力的用上学到的设计模式,但是经常在误用模式,折腾半天发现是在脱裤子抓痒。。。

当学完设计模式之后,我们又很困惑,感觉这些模式简直太像了,很多时候我们分不清这些模式之间到底有什么区别,而且明白了设计过程中的一个致命 的东西——过度设计,因为设计模式要求我们高扩展性,高重用性,但是在需求提出之初,我们都不是神,除了依靠过去的经验来判断外,我们不知道哪些地方要扩 展,哪些地方要重用,而且过去的经验就一定是正确的吗?所以我们甚至不敢再轻易用设计模式,而是还一直在用面向过程的方法在实现需求。

   四、学习重构

精彩的代码是怎么想出来的,比看到精彩的代码更加令人期待。于是我们开始思考,这些大师们莫非不用工作,需求来了没有领导规定完成时间,只以设 计精彩的代码为标准来开展工作?这样的工作太爽了,也不可能,老板不愿意啊。就算这些理想的条件他都有,他就一开始就设计出完美的代码来了?也不可能啊, 除非他是神,一开始就预料到未来的所有需求,那既然这些条件都没有,他们如何写出的精彩代码?

Joshua Kerievsky在那篇著名的《模式与XP》〔收录于《极限编程研究》一书)中明白地指出:在设计前期使用模式常常导致过度工程(over- engineering)。这是一个残酷的现实,单凭对完美的追求无法写出实用的代码,而「实用」是软件压倒一切的要素。

在《重构——改善既有的代码的设计》一书中提到,通过重构(refactoring),你可以找出改变的平衡点。你会发现所谓设计不再是一切动 作的前提,而是在整个开发过程中逐渐浮现出来。在系统构筑过程中,你可以学习如何强化设计;其间带来的互动可以让一个程序在开发过程中持续保有良好的设 计。

总结起来就是说,我们在设计前期就使用设计模式,往往导致设计过度,因此应该在整个开发过程,整个需求变更过程中不断的重构现在的代码,才能让 程序一直保持良好的设计。由此可见,开发过程中需要一直重构,否则无论当初设计多么的好,随着需求的改变,都会变成一堆烂代码,难以维护,难以扩展。所谓 重构是这样一个过程:「在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构」。重构的目标,就是设计模式,更本质的讲就是使程序的架构 更趋合理,从而提高软件的可维护性,可扩展性,可重用性。

《重构——改善既有的代码的设计》一书也是Martin Fowler等大师的作品,软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄",不可不读啊。

   五、开始通往优秀软件设计师的路上。 可以500%提高开发效率的前端UI框架!

通过设计模式和重构,我们的所学和我们工作的coding终于结合上了,我们可以在工作中用面向对象的思维去考虑问题,并开始学习重构了。这就 像游泳一样,我们看完了各种顶级的游泳比赛,明白各种规则,名人使用的方法和技巧,现在是时候回家去村旁边的小河里练练了。练习也是需要有教练的,推荐另 一本经典书叫《重构与模式》,引用他开篇的介绍,本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系,说明了通过重构实现模式改善既有的 设计,往往优于在新的设计早期使用模式。本书不仅展示了一种应用模式和重构的创新方法,而且有助于读者结合实战深入理解重构和模式。

这本书正是我们需要的教练,值得一读。

   六、没有终点,只有坚持不懈的专研和努力。

经过了几年的坚持,终于学会了灵活的运用各种模式,我们不需要去刻意的想用什么模式,怎么重构。程序的目标,就是可维护性,可扩展性,可重用 性,都已经成了一种编程习惯,一种思维习惯,就像我们练习了几年游泳之后,我们不用再刻意的去考虑,如何让自己能在水上漂起来,仰泳和蛙泳的区 别..... 而是跳进水里,就自然的游了起来,朝对岸游去。但是要和大师比起来,嘿嘿,我们还有很长的路要走,最终也可能成不了大师,但无论能不能成为大师,我们已经 走在了成为大师的正确的路上,我们和别的程序员已经开始不一样,因为他们无论再过多少年,他们的水平不会变,只是在重复造轮子,唯一比你快的,就是 Ctrl+C和Ctrl+V。

正确的路上,只要坚持,就离目标越来越近,未来就一定会是一个优秀的架构师,和优秀架构师的区别,可能只是时间问题。

转载于:https://www.cnblogs.com/cuijiujiu/p/9552334.html

如何成长为一名合格的web架构师?相关推荐

  1. 阿里前大数据架构师:如何快速的成长为一名优秀大数据架构师

    什么是大数据架构师: 围绕大数据系平台系统级的研发人员, 熟练Hadoop.Spark.Storm等主流大数据平台的核心框架.深入掌握如何编写MapReduce的作业及作业流的管理完成对数据的计算,并 ...

  2. 如何从三流程序员成长为一名年薪50W的架构师(文末附送学习资料)

    成为架构师是绝大部分程序员的梦想,当然不敢说绝对,因为一部分程序员想转行搬砖还有一部分想往管理层发展.可是像我们这样有这良好的职业操守的程序员怎么可能三心二意呢,自己选的编程跪着也要把代码敲完.想要成 ...

  3. 资深大牛吐血总结:如何成为一名合格的云架构师?

    https://cloud.tencent.com/info/e9695bd18d1c7752b3924bb3ac38cc95.html [51CTO技术沙龙]10月27日,让我们共同探索AI场景化应 ...

  4. 浅谈---如何成长为一名合格的架构师?

    1 架构师平时都做些什么事? 主要当然是跟架构相关的事情吧(好像是废话哎),具体一点就是架构设计,讲解推广,然后再做一些代码方面的工作.说起来,讲解推广可能是很多人不太重视的,但其实它的比重还是比较大 ...

  5. 如何成长为一名合格的架构师?

    作者|一乐 编辑|小智 1.架构师平时都做些什么事?. 主要当然是跟架构相关的事情吧(好像是废话哎),具体一点就是架构设计,讲解推广,然后再做一些代码方面的工作.说起来,讲解推广可能是很多人不太重视的 ...

  6. 《演讲之禅》助你成长为一名合格程序员

    "程序员"这一职业在大部分人心中就是坐在电脑前,一言不发,低头敲击键盘的码工.实则不然,今日只会低头做事.不善言辞的程序员已经不能适应行业发展的需求. 程序员也需要表达,并且要清晰 ...

  7. mongodb的数据怎么导入到hdfs上_如何成为一名合格的数据架构师?

    "本文作者:奇点云高级数据架构专家 天启,奇点云高级数据架构专家,原海尔集团数据架构师.原阿里巴巴政务团队数据架构师.精通数据仓库建模理论及数据开发技术,具备零售.政务.医药.制造等多个领域 ...

  8. 如何成为一名合格的数据架构师?

    "本文作者:奇点云高级数据架构专家 天启,奇点云高级数据架构专家,原海尔集团数据架构师.原阿里巴巴政务团队数据架构师.精通数据仓库建模理论及数据开发技术,具备零售.政务.医药.制造等多个领域 ...

  9. 作为一名合格的JAVA架构师需要点亮哪些技能树?

    先看看这些程序员技能树,你掌握或了解哪些?OMG竟然有么多---震精!震精!!! 首先架构师筑基系列 其次开源框架 高性能架构 微服务 在此我向大家推荐一个架构学习交流圈.交流学习伪鑫:1253431 ...

  10. 如何成长为一名优秀的Web开发人员

    编辑器加载中... 第一步:学好HTML HTML(超文本标记语言)是网页的核心,因此你首先应该学好它,不要害怕,HTML很容易学习的,但也很容易误用,学懂容易要学精还得费点功夫,但学好HTML是成为 ...

最新文章

  1. 组合与继承之重写方法和字段
  2. 交叉验证分析每一折(fold of Kfold)验证数据的评估指标并绘制综合ROC曲线
  3. 基于SSM实现商户管理系统
  4. 重新想象 Windows 8 Store Apps (27) - 选取器: 联系人选取窗口, 自定义联系人选取窗口...
  5. 在服务器端生成Excel文件然后从服务器下载的本地的代码
  6. python tempfile自动删除_Python tempfile模块生成临时文件和临时目录
  7. CMD 命令行查看端口被哪个程序占用,并根据PID值,找到相应的程序,关闭掉对应服务或进程!...
  8. oracle 减少回表,減少oracle sql回表次數 提高SQL查詢性能 | 學步園
  9. JAVA只要掌握内部类,多继承和单继承都不是问题
  10. Redis的C++ client表、Json的C++ client表|汇总|大全
  11. iocp三层架构服务器模型
  12. python在线编程免费课程-十大python零基础编程在线网课一对一费用多少钱
  13. UGUI的Drag实现鼠标拖拽
  14. 异常将上下文初始化事件发送到类的侦听器实例_Java虚拟机从入门到入土之JVM的类加载机制
  15. 两计算机之间怎样快速传输数据,两个局域网之间怎么互相传输文件有什么快速方法...
  16. 485通讯协议_终于有人把RS485通讯协议应用及缺点分析清楚了,看完收获多多
  17. 计算机桌面图标底纹,怎样去除桌面图标下的底色[XP系统]【图文教程】
  18. 磁盘 I/O 和网络
  19. 【Jupyter Notebook】添加目录--Table of Contents
  20. zabbix_sender安装和使用

热门文章

  1. 实时计算在天猫双十一大屏中的应用
  2. Java 208 道面试题:第一模块答案
  3. JavaScript (十九):DOM对象其它操作
  4. Hadoop生态基础学习总结
  5. linux下rar-unrar命令使用
  6. 阿里云服务器ECS云盾提醒网站被WebShell木马后门分析与对策
  7. Linux中图形界面与字符界面的转换
  8. generator tar.gz file in windows
  9. 卡通版三十六计(超级搞笑)
  10. mysql求和 子查询_MySQL:子查询中的值总和