设计模式学习笔记 - 回顾总结:如何将设计思想、原则、模式等理论知识应用到项目中?

发布于:2024-05-10 ⋅ 阅读:(31) ⋅ 点赞:(0)

概述

上篇文章,我们第整个专栏的理论知识点做了串讲,不知道你掌握的如何?对于上节课总结的重点内容,希望你能多花点时间搞透彻,对于一些不那么重要的内容,你可以把它们当做资料,用到的时候随手查询,再深入学习。

实际上,虽然理论掌握得差不多,专栏也很贴近实战,每个知识点的讲解都有结合实际的代码案例,并且最后还有集中的项目实战,但落实到自己写代码时,可能还是无法将学习到的理论知识很好的应用。本章,就再聊一聊如何将设计思想、原则、模式等理论知识应用到实际的项目开发中。


吃透理论、先把书读厚再把书读薄

把理论知识灵活地应用到实践的前提是,对理论有透彻的理解。如果对理论知识掌握得似懂非懂,在实际软件开发中,可以照葫芦画瓢去解决,但是,如果问题背景稍微改变,就会比较难联想到对应的理论知识,更难灵活地应用理论去解决。

要透彻理解专栏中的知识点,一个是要多看几遍,二是要有死磕的精神。虽然这两个方法看起来没有什么高大上的,但是它们确是很有用。

书读百遍其义自见。有时候,对某个知识点,如果看一遍不懂,就硬着头皮多看几遍,或者隔几天回过头来再看一遍,你会发现原来很多不懂的地方,自然而然就懂了。

**慢就是快,快就是慢。**专栏涉及的内容很多,但我们花一年的事件把所有的知识点学透彻,实际上是一件一劳永逸的事情。这个过程虽然看似漫长,但收益却很多。对此而言,如果你只是为了追求结果速度,花一两个月、甚至一两个礼拜,把课程学完。这看似很快,但实际上收获会很少。

**先把书读厚,在把书读薄。**反复地学,持续的看。先把书读厚,等到你把所有的知识点都理解透彻,并且在脑子里建立起清晰的知识体系之后,你会发现,实际上专栏就那么点东西,并不难记忆。前提是你先要花时间把书读厚,然后才能做到把书读薄。

虽然这里这里讲到书读百遍其义自见,也讲到死磕精神,但是有时候,对于某个知识点,我们看了很多遍、死磕了很长时间,还是没法透彻理解,这个时候也不要过于钻牛角尖,非得 “现在立刻马上就要” 把它拿下。可以先把这个知识点放一放,先看看后面的内容,隔一段事件,让只是沉淀、消化一下,再回过头来看也是可以的。

在实际中反复学习、模仿和借鉴

很多人说,理论的知识学了就忘了,忘了是不是就等于白学?实际上不是的,起码对于这个专栏的内容来说,并非如此。在专栏中,几乎每个知识点,都结合具体的案例和代码来讲解,目的就是为了让你在实战中学习。所以,你学习的重点不是理论知识,而是跟随思维逻辑,学习如何分析代码问题,解决代码问题。通过专栏,经过上百个代码案例的剖析学习,即便理论知识你可能会忘记,但这种潜移默化的能力锻炼,是不会丢掉的。

对于新手来说,最好的学习方法之一就是 “模仿”。你可以先从 “照抄” 开始,把所有的代码都抄一遍,然后再慢慢过渡到自己去默写。

对应本专栏来说,如果你项目经验不多,要向把理论一下子就灵活应用到项目中,实际上这个要求就有点过高了。通用,你也可以先从模仿开始,对于项目中遇到的跟专栏中相似的开发场景,就可以借鉴专栏中的设计思路、代码实现。实际上,除了专栏的案例外,还有很多借鉴的来源,比如我们前面剖析过的经典开源项目(Spring、Mybatis),还有项目中大牛同事写的代码等。

有人为了刷 LeetCode、刷算法题,会积累一些算法模板,对于相似的问题,套用算法模板来快速解决。通用的,我们也可以积累设计模板、代码模板,对于相似的功能需求,可以套路设计模板、代码模板来解决。比如,在前面讲到的限流框架、灰度组件中,加载配置文件这样一个常用的功能设计和实现,我们就可以抽象成模板。对于其他项目中类似的功能需求,直接套用就可以,不用从零开始设计和实现了。

刻意思考、刻意训练、追求极致

要想把理论知识应用到项目中,并且做到润物细无声、融会贯通、无招胜有招,需要经过漫长的刻意思考和刻意联系。

拿到一个功能需求时,我们先去思考一下如何设计,而不是上来就写代码。写代码时,也要时刻思考代码设否遵循了经典的设计思想、设计原则,比如是否足够可扩展、是否满足 SOLID 原则、可读性如何等等

写完代码之后,我们再思考一下,代码是否有进一步优化的空间做 Code Review 时,看到别人优秀的代码,我们就要去思考一下,有哪些值得借鉴的地方

总之,在平时的开发中,我们要刻意的去做这种跟代码质量、代码设计相关的思考训练。时间长了,这种思路就能成为习惯和本能反应,慢慢地,你的代码能力也就不自觉地提高了。

刻意训练的过程在前期会比较痛苦。为了尽可能写出高质量的代码,为了刻意训练在代码中应用理论知识,原本半天就能写好的代码,可能需要好几天才能完成。在最开始时,我建议你把专栏中讲到的经典设计思想、原则、模式,打印出来贴在电脑旁,每次写代码时,对照着每个知识点,一个一个去审视代码。

跟前面讲到的花很多时间把理论知识搞透彻的道理一样,刻意训练虽然在前期需要投入跟多的时间和精力,但也是一件一劳永逸的事情。等到训练到一定程度后,你会发现,在不依赖这个知识点列表的情况下,你开始不自主得考虑代码质量问题、设计问题,不经意写出的代码,就完全符合高质量代码的要求,而且,写出的好代码并不会花费更多的时间了。相反,如果不愿意为刻意训练付出时间和精力,每次写代码都马马虎虎,代码质量永远都提高不了,也永远达不到灵活应用理论知识到项目中。

多花点心思和时间把一段代码写好、优化到极致,比写十段凑活能用的代码,对提高代码能力更有效。实际上,这就好比刷 LeetCode 算法题,对于一些经典算法的经典题目,我们一定要刻意地多花点时间搞清楚,死磕一下。虽然死磕的过程很痛苦,可能会花点你很多时间,但一旦搞明白之后,其他类似的题目都可以解决。相反,如果看到不会的问题,连思考都不思考,就去看答案,那做十道题,也还是没有太多长进,看到题目不看答案还是写不出来。


网站公告

今日签到

点亮在社区的每一天
去签到