直接springboot项目上手学习是不是若依框架是最好的选择?
无利益相关,这几天正好在欣赏若依这个框架,顺手答一下。
不管大家喜不喜欢这种开源的快速开发框架,恐怕都很难否认一点:这种框架中的佼佼者,里面是有着很多最佳实践的。
姑且不谈底层的计算机基础和编程语言基础的学习,在学习框架和库这个层面上(因为题主问的就是学习SpringBoot),文档和示例是必不可少的,文档告诉你在语法层面可以怎么做,示例告诉你在经验层面最好怎么做。
学习框架和库,核心是上手实践。这有两种选择,一是看着文档,从无到有地实现功能,这难免要试错犯错,但掌握得更扎实。二是看着示例,照猫画虎地实现功能,这能少走弯路,但是认知效果较差。
人的学习进步,以理论联系实践效果最佳,理论由文档和书籍提供,实践又分为直接经验和间接经验。亲自去编码去试错,这是宝贵的直接经验,而优秀的开源项目的源码和文档,则提供了宝贵的间接经验。
**我认为最好的学习方法,是先自己闭门造车,把功能做完,然后再开眼看世界,看别人是怎么做的。两相比较,去思考别人的做法好在哪里,其中包含了哪些面向对象的或者软件工程的理论,自己能从中学到哪些东西,怎样用学到的这些东西改进自己的代码。**这看起来是弯路,但其实是捷径,能把理论和实践、直接经验和间接经验有效地结合在一起。
若依这种优秀的快速开发框架,这十多年来我看过不少,它们的主要组成部分都是技术层面的CRUD封装,和业务层面的权限字典等通用功能。可以说用做管理系统,它们已经接近当下程序员所能做到的极限了。这不是一个溢美的结论,优秀的快速开发框架太多了,横向比较可知不会有质的突破了。而学习SpringBoot,用SpringBoot做项目,几乎不可能不做CRUD。所以只要目的是学习和使用SpringBoot,那去阅读和理解这些优秀框架的源码,就一定能从中吸收到营养。
但必须注意,不能停留在使用快速开发框架的舒适窝里。如果只成为一个若依程序员而不是一个SpringBoot程序员,只是一个SpringBoot程序员而不是一个Java程序员,只是一个Java程序员而不是一个通用的程序员,那学习和成长都会遇到瓶颈。越是傻瓜式的框架,越有把需求实现员隔开于技术的本质的副作用。从JSP+Servlet到SSH,从SSH到SpringBoot,从SpringBoot到若依,我们实现需求越来越快了,同时深入底层和亲手封装的次数也越来越少了,照猫画虎,搭一搭积木,钱就到手了,这是赚钱的愉悦,但不是技术长进的愉悦。
所以不要满足于使用,而要追求于吃透,使用若依简单,吃透若依不简单,它里面包含了很多对编程语言、面向对象、软件工程、业务逻辑的深入理解,体现出了作者深厚的内功。如果真的想看透它的门道,不止是SpringBoot,它能倒逼你去读很多书、看很多文档、理解很多业务。正是因为简单的背后有很多东西,所以它才能让你实现需求起来如此简单。
快速开发框架确实烂大街,也确实无非是CRUD、代码生成和通用业务,确实容易让有追求的程序员看不起,但不得不承认的是,这种快速开发框架,大部分程序员也是没能力从零开始手动封装一个的。与此同时,它又没有像真正顶级的开源项目那样深奥莫测、高不可攀,大部分程序员努努力,下下功夫,封装一个低配版出来,还是有希望的。这个难度,正好适合于作为普通程序员的学习材料,只要避免在学习过程中动眼比动手多,看得比敲得多就可以了。
所以我个人的建议是,对它采用对待好学生的作业的态度,你先自己试着把作业做出来,然后再去看,看了也不要停留于抄,而是琢磨、理解,最后自己再上手把自己的作业改好。做习题而没有答案,那是不行的,上来就抄答案,那更是不行的。在管理系统和CRUD这个层面,说若依这种优秀的快速开发框架的源码是答案,恐怕大差不差,至少说它是好学生的作业,不会是夸大其词。
至于SpringBoot的文档和源码,那是教材正文啊。正文和习题答案,当然缺一不可。无论编程,还是其他方面,如果你学习的时候不得要领,就想想教材的组织方式,最重要的一点是,一定要亲手做题。
参考链接:https://www.zhihu.com/question/410543037/answer/2393881267,整理:沉默王二