Appearance
为什么需要学习掌握设计模式相关知识
我们都意识到基础知识的重要性,觉得夯实基础才能走得更远,但是对于这些基础知识如何转化成“生产力”还是比较疑惑的。例如操作系统、组成原理、编译原理,它们在工作中很难直接用上,不过确实潜移默化的提高我们对技术的理解。
设计模式不同,可以直接提升我们的开发能力。如果数据数据结构和算法是教你写出高效代码,那设计模式是教你如何写出可扩展、可读、可维护的高质量代码。
告别写被人吐槽的烂代码
“Talk is cheap,show me the code。”
我们总会对写出好代码的作者产生好感和认可。不管是什么级别,从代码就能看出,他是一个基础扎实的员工,值得培养。代码写得好,能让你从团队中脱颖而出。
烂代码,例如命名不规范、设计不合理、分层不清晰、高度耦合等,这样的代码维护起来非常费劲!每次改动牵一发动全身。
提高复杂代码的设计和开发能力
大部分工程师平常比较熟悉编程语言、工具、框架等,在平常的工作并不需要具备很强的设计能力,只要单纯理解业务逻辑,翻译成代码即可。
但是如果有一天,需要你去开发一个跟业务无关的、比较通用的功能模块时,面对这样稍微复杂的代码设计和开发,如果仅凭前面完成功能的能力,想要写出易扩展、易用、易维护的代码并不容易。
如何分层、分模块?怎么做到解耦?... 这些问题都会挤到我们前面。
这些都需要设计模式相关的知识(包括设计模式、设计原则、面向对象的思想)。这方面的知识非常重要,如果没有太多了解,可以在平常开发中一直保持刻意锻炼、积累这方面的能力。
让读源码、学框架事半功倍
我们想在技术有更多积累,既要有广度也要有深度。在学习、使用工具框架时,都会抽空去研究研究原理,读一读源码,而不仅是会用而已。
但是容易遇到看不懂、看不下去的问题:
- 不能理解:优秀的开源项目,代码量、模块都会表多,常常调来调去。为了保证代码的扩展性、灵活性、可维护性,会用到很多设计模式、设计原则。如果我们不懂这些相关知识,就不能理解作者的设计思路。
- 理解不深入:另外,有时候我们以为自己看懂了,但是精髓并没有 Get 到多少!如果没有这些基础知识的积累,我们可能就是了解个屁毛看个热闹而已。
学习设计模式,不仅让你轻松读懂开源项目,还能深入的理解里面的技术精髓。
为你职场发展做铺垫
普通的程序员只需要把框架、工具、编程语言使用熟练,就可以应付平时的开发工作了。但是想成为技术专家、技术 leader、有更好的发展,就要重视基本功的训练和基础知识的积累。
- 技术大牛:如果你只是框架用的溜,单写出的代码很烂,就永远成为不了别人眼中的“技术大牛”。
- 培养新人:当我们成长到一定阶段,需要承担一些指导、培养新人、以及 code review 的工作,如果不了解“什么事好代码?”“如何写出好代码?”不了解,那怎么指导别人,怎么让他人信服?
- 项目把控:还有,如果你是一个技术 leader,负责一个项目的整体开发工作,你就需要为开发进度、开发效率和项目质量负责。肯定不希望团队堆砌垃圾代码,导致项目无法维护,添加、修改一个功能都需要费很大劲,最终拉低团队的开发效率。
- 提升效率:除此之外,代码质量还会导致线上 bug 频发,排除困难,整个团队都陷在无意义修改低级 bug、打补丁的事情中。设计良好、易维护的系统,可以解放大家时间,让大家去做更有意义的事情。
- 招聘:最后,如果我们负责团队的招聘工作,这个时候,就要考察候选人的设计能力、代码能力,那么设计模式的问题就是一个很好的问题。反之应对面试也类似,如果重视和积累设计模式相关知识,面试前只要重新温习一下,就可以自信满满的面试,而不是老担心被问到,影响正常的面试发挥。