怎么吃透一个java项目?

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:21   686   0

扣丁学堂

初学者跟着视频敲Java项目,多数人只是机械的在跟着打字;稍微有些功底的学员,也是完全按着视频的思维脉络,经过反复的的BUG调试才能完成项目。但即使这样每次敲完一个项目后,仍然感觉心发虚,项目涉及编程知识似懂非懂。大毅力者,不撞南墙不回头,非要搞懂它,又花费大量时间终于把项目中的知识整明白了,感觉有所收获,但再算算自己的时间成本,总感觉那里不对劲,下次遇到同类型项目,发现自己依然是“老虎吃天,无处下爪”。而大多数学员则敲完代码即认为写过项目了,不明白的也不求甚解,过个把月基本全部淡忘了。

我们说一个项目的开发完整周期需要经过从需求分析---》概要设计---》详细设计---》编码实现---》测试---》部署运维 各个环节。而初学者跟着视频写项目,则实质上是跳过了前期的分析与设计环节,直接copy编码环节,测试环节也就是简单的功能性测试,再后边则根本未考虑。所以这种掐头去尾只取中间的学习模式出现上述现象也是必然结果。

那么,如何真正的吃透一个项目呢?这里要说吃透一个项目的标准就是:下次遇到此类项目可以快速使用写过的项目的解决方案完成它。

要达到这个的标准,还得从开发一个项目的过程来分析。我们说需求分析实质上就是提出问题域;概要设计和详细设计本质上是给出问题域的解决方案;而编码环节就是时使用代码来实践这个解决方案。而学员之所以明明敲完项目代码,也运行良好,却依然心里发虚,过后遗忘,就是因为没有掌握提出的问题域(也就是常说的软件需求),而对于其解决方案更是没有概念,只是一味的按照视频中的思路机械照搬,也就是不知其然,不明所以然。

明白了问题根源,我们要如何解决这个问题呢?其实答案已经给大家了,就是要从项目代码中整理出项目的需求和设计思路,然后再验证需求和设计思路是否正确;因此,我们不妨从如下几个步骤来完成。

  1. 整理出项目的需求

视频项目往往文档很少,或跟本不提供文档,或者是文档严重落伍, 根本没法看。对于初学者来时,要逆向分析出需求原型来也是勉为其难了。那么,我们退而求其次,就是之分析出项目的功能需求即可。

这里分享两个具体的做法:

1、就是根据页面的功能模块,绘制出项目的系统功能结构图(如下图所示)

怎么吃透一个java项目?

这里需要注意,系统功能结构图不需要过于细化,三级足够了。

2、绘制各子模块的页面流转图(如下图所示)

怎么吃透一个java项目?

系统功能结构图和子模块业面流转图的绘制,基本上就搞清楚项目都有哪些功能需求了。当然,如果学员能构进一步绘制出核心业务的流程图就对项目的的需求更清楚了。

  1. 整理出项目的设计脉络

这一步,需要整理出项目的数据库设计模型,一般项目视频都带有项目的数据库脚本代码,借助于pd等工具,逆向工程导出项目的数据库模型,对项目的数据库设计也就一目了然了。当然前提是你要会使用这些工具及逆向工程,如果不会这些,就只能手工一个个绘制了。呵呵呵!!!

接下来就是要整理出视频项目如何实现某功能的,这个需要从页面功能开始一步步跟踪;对ide工具的debug使用熟练的学员可以调试运行项目,通过断点调试一步步观察每个步骤的调用对象及流程和数据流;那么对于debug不熟练的学员,则就只能通过阅读源码,手工整理出一个大致的调用流程来。

这样一番操作下来,基本上你对某个功能如何实现,功能模块间调用的关系也i就非常清楚了。

  1. 项目复盘

以上两个步骤是深入学习的过程,有前车之鉴,相对easy些,但是就这样一番操作下来,相信你对项目的理解会跟进一步深入。接下来就是复盘项目,那要如何做呢?

首先,根据自己整理出的功能需求,重新根据自己的理解来设计数据库模型,如过和视频项目数据库模型有出入很正常的,不必在意它,只要你觉得这样可以实现功能就好。

其次,你抛开视频,按照自己的理解,从简单的功能开始尝试着独立开发它,刚开始可能比较难,总想着参照原有的代码,这个念头一定要扼杀掉。你可以一个步步来实现,例如:先处理数据库访问,写单元i测试通过后;再处理对外接口,通过postman测试通过后;最后和前端页面交互。当你,按照自己思路实现几个功能后,后面的基本就上道了。

最后,你测试下自己写的项目代码,看看和视频项目的差距,逐步完善它,当然这个过程可能需要几次反复。

如果你能通过以上步骤的学习,那么恭喜你,你已经彻底的搞懂一个java项目了。

后记:当然以上更多的是说普通的业务功能实现(通过交互对自身数据库进行增删改查操作)

如果项目中含有 通过定时任务或服务器脚本对自身数据库进行增删改查操作

这个和第一种类型一样,只不过换了个入口。比如定时任务,或者启动的时候就开启的一些线程。寻找这些入口的确不是特别容易,比较头疼,但也只是入口比较隐蔽而已。找到他,记下来,具体分析过程还是按照上述方法去分析,就可以了。

再比如,分布式项目中含有调用或通知其他服务做一些事情

如代码中可能有通过mq给其他服务发消息,或者直接调用其他服务的接口,或者调用类似云推送的接口让它去帮忙像mq发消息。

这部分代码可能更加隐蔽,但数量少,逻辑也简单,你需要做的仍然只是找到它们。这部分也是为了解项目之间的关系打下伏笔。

这三种类型的代码研究清楚后,对于一个业务型的项目来说,已经基本足够了。

对于一些基础服务和中间件类型的服务,还是得慢慢积累技术深度才行。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP