标题:Design Patterns | 01 为什么要尽早掌握设计模式

链接:

标签:设计模式

摘要:设计模式是前人经验的总结,教大家如何写出可扩展、可读、可维护的高质量代码。设计模式与日常工作中的编码有直接的关系,直接影响到开发人员的开发能力。

1 什么是设计模式?

设计模式是前人经验的总结,教大家如何写出可扩展、可读、可维护的高质量代码。设计模式与日常工作中的编码有直接的关系,直接影响到开发人员的开发能力。

学习“数据结构与算法”是为了写出高效的代码,而学习设计模式是为了写出高质量的代码。

也许有同学会问:只要代码能用、能解决问题不就够了吗?

其实不然,写出“能用”代码的人比比皆是,但并不是每个人都能写出“好用”的代码。只会写能用的代码,永远成不了大牛。

另一方面,写烂代码和好代码花费的时间是差不多的。当你把编写高质量代码培养成习惯之后,在编写代码的时候,你自然就有代码质量意识,也就能写出不错的代码。

2 为什么要学习设计模式?

2.1 完美回答面试中设计模式相关的问题

先上一道面试题:

“你了解设计模式吗?在你过往的项目中,用到过哪些设计模式?是在什么场景下用的?都解决了哪些问题?”

这一连串提问,很眼熟吧?学习设计模式能帮你在这道题目上吊打面试官。

2.2 不再编写被其他同事吐槽的烂代码

代码写得好,能让你在团队中脱颖而出。

代码能力是一个程序员最基础的能力,是展示一个程序员基础素养直接的衡量标准。你写的代码,实际上就是你名片。

2.3 让读源码、学框架事半功倍

提升程序开发软实力,就要注重技术的积累,既要有广度,也要有深度。这其中学框架、读源码是必经之路。

优秀的开源项目、框架、中间件,是集各大顶尖高手的丰厚经验,经过大量迭代才成型的,我们如果没有身后的基本功,在剖析原理、学习技术的时候,就不可能参透精髓,顶多只是了解个皮毛,似懂非懂。

2.4 提高复杂代码的设计和开发能力

假设现在给你一个任务:开发一个跟业务无关的、通用的功能模块,你会如何下手?

也许你需要思考这些问题(包括但不限于):

如何分层、分模块?如何设计相关类?每个类应该有哪些属性、方法?
怎么设计类之间的交互?该用继承还是组合?该使用接口还是抽象类?
如何解耦,保证高内聚低耦合?该用单例模式还是静态方法?用工厂模式创建对象还是直接 new 出来?

2.5 为职场发展做好技术准备

瘦风说:不想当大牛的程序员不是好菜鸟。我们如果要在职场取得更长远的发展,就要重视基本功的训练和基础知识的积累。

(1) 随着技术的积累,我们可能需要承担一些培养新人、指导初级员工、做 code review 等方面的工作。
可如果我们自己对 “什么是好代码?如何写出好代码?” 都不了解,那又要如何指导别人、让别人信服呢?

(2) 如果你的级别比较高,可能还要为 开发进度、开发效率和项目质量 负责。如果项目中有很多垃圾代码,会导致整个项目的维护成本高昂,添加、修改一个功能都会很费力,最终拉低整个团队的开发效率。而代码质量不够高,还会导致线上 bug 频发,也难以及时排查解决相关问题。

(3) 最后,当你成为团队的 leader,或者资深工程师、技术专家之后,你肯定要负责一部分团队的招聘工作。这时,如果要考察候选人的设计能力、代码能力,那设计模式相关的问题会是一个很好的切入点。

3 本篇总结

设计模式与编码、开发有着直接的关系,是你现在就要开始学习的。
早点学,以后的项目就都可以拿来锻炼,每写一行代码都是对内功的使用和强化,是可以在整个职业生涯中受益的事。

参考资料:

极客时间专栏-王争《设计模式之美》

版权声明

作者: 瘦风(https://healchow.com)

出处: 博客园 瘦风的博客(https://www.cnblogs.com/shoufeng)

感谢阅读, 右侧导航栏有「瘦风的南墙」公众号二维码,输出更及时、更体系,欢迎扫码关注

Design Patterns | 01 为什么要尽早掌握设计模式的更多相关文章

  1. Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】

    原文链接: http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part-2-singleton/ De ...

  2. [Design Patterns] 01. Creational Patterns - Abstract Factory

    设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式的目的是提高代码的可重用性,让代码更容易被他人理解,并保证代码可靠性.它是代码编制真正实现工程化. 四个关键元素 ...

  3. Design Patterns in Smalltalk MVC 在Smalltalk的MVC设计模式

    Design Patterns in Smalltalk    MVC在Smalltalk的MVC设计模式 The Model/View/Controller (MVC) triad ofclasse ...

  4. [Design Patterns] 3. Software Pattern Overview

    When you're on the way which is unknown and dangerous, just follow your mind and steer the boat. 软件模 ...

  5. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  6. 设计模式(Design Patterns)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  7. 设计模式(Design Patterns)Java版

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. 云设计模式-Design patterns for microservices

    云设计模式 https://azure.microsoft.com/zh-cn/blog/design-patterns-for-microservices/ https://www.cnblogs. ...

  9. Java设计模式(Design Patterns)——可复用面向对象软件的基础

    设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是为了可重用代码.让代码更容易被他 ...

随机推荐

  1. cookbook of python for data analysis

    打算写讲义,目录已经想好. Content basic of python jupyter 开发环境 python 基本语法 利用python脚本完成工作 numpy for matrix compu ...

  2. 脚手架搭建vue项目

    1.安装安装node.js: 2.cnpm install vue-cli -g (全局安装,需要注意的是我这里是用淘宝镜像安装的,没有安装cnpm的需要先去安装一下) 3.vue --version ...

  3. linux下 c语言调用c++

    /*****************************g++编译cpp 文件为库文件.编译C文件时gcc 要链接 -l stdc++ 这个库**(非常重要)*///定义c++ class 头文件 ...

  4. Vue项目中跨域问题解决

    后台更改header 使用http-proxy-middleware 代理解决(项目使用vue-cli脚手架搭建) Jquery jsonp 一.后台更改header header('Access-C ...

  5. ANT下载和配置 IDEA

    1.下载地址大全: http://archive.apache.org/dist/ant/binaries/ jdk与ant版本有对应关系,目前知道: jdk1.7与ant1.10不兼容,1.7必须用 ...

  6. HTML 标签的 target 属性

    定义和用法 target 属性规定在何处打开 action URL. 属性值 值 描述 _blank 在新窗口中打开. _self 默认.在相同的框架中打开. _parent 在父框架集中打开. _t ...

  7. 64)PHP,变量的生命周期

    在20day  05 假如我目前在的地址是上面的那个index.php?p=back&c=Admin&a=check  这个请求里面申请的所有事 或者是你申请的所有变量或者是全局变量都 ...

  8. OpenGL 保存bmp图像

    今天我们先简单介绍Windows中常用的BMP文件格式,然后讲OpenGL的像素操作.虽然看起来内容可能有点多,但实际只有少量几个知识点,如果读者对诸如”显示BMP图象”等内容比较感兴趣的话,可能不知 ...

  9. scala slick mysql 字段过多 tuple问题

    原同步服务正常,因需,对方单表新增字段,超过22条 sbt assembly 编译出错 too many elements for tuple: 26, allowed: 22 scala case ...

  10. discount the possibility|pessimistic|bankrupt|

    Nor can we discount the possibility that some factor in the diet itself has harmful effects. ADJ-GRA ...