新人拿到一个java项目如何看它的架构和逻辑,从哪里入手?
苟君杰
2022-04-19 23:27:57
共 1 个回答
郑依琳
2022-04-26 13:12:17
看了不少回答,略为复杂。
我就简单点回答,做好以下七个步骤即可:
1、弄清楚这个项目的作用和主要用到的技术及框架
2、部署项目,并设置debug模式
3、先从前端每个主要功能都走一遍
4、每个action的方法打断点,action中因为有断点,故每个后台acting、service、DAO都走一遍
5、用visio或艺图把类结构图和代码流程图画出来(问下自己,有没有可以参考的visio文档?)
6、尝试修改一些代码逻辑,让项目继续跑起来,看看能发生什么奇妙的事情
7、抽离主干代码,重建工程,再重新填充逻辑代码,尝试是否能让项目跑起来且功能基本一致
这七个步骤不光能吃透Java项目,也可以用于其他语言开发的项目,也可以拿来学习各种开源项目。
(PS:觉得写得不错的话,记得帮我双击来个赞哈~,在这里送大家一份超赞的计算机学习资料,书单链接:
findyi:计算机必读经典书籍100本(含下载方式)
再给大家推荐一波能用于练手的Java项目,这些都按以上7个步骤拆解一遍,我相信你的Java编程能力一定会突飞猛进!
1. mall:电商系统
star:25.8k
包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现。
前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。
后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
2. 秒杀系统设计
star:11.5k
关于高并发大流量如何进行秒杀架构的项目。学习之前,先快速入门 MQ 、 SpringBoot 、 Redis 、 Dubbo 、 ZK 、 Maven , lua ,效果会更好!
3. spring-boot-api-project-seed
star:5.5k
基于Spring Boot MyBatis的种子项目,用于快速构建中小型API、RESTful API~可以帮助我们摆脱重复劳动,专注于业务代码的编写,告别996。
4. 微人事管理系统
star:11.9k
前后端分离的人力资源管理系统,项目采用SpringBoot+Vue开发。
5. MarkdownEditors
star:1.1k
基于Android的Markdown编辑器,项目功能本身不难,但是细节很多。
6. 博客系统
star:1.3k
基于SSM实现的个人博客系统,适合初学SSM和个人博客制作的同学学习。主要涉及技术包括的包括Maven,Spring,SpringMVC,MyBatis,Redis,JSP等。
7. MyBatis-Spring-Boot
star:2.9k
是Spring Boot集成MyBatis的基础项目。
8. webporter
star:2.1k
基于 webmagic 的 Java 爬虫项目。核心简单,但是涵盖爬虫应用的完整流程,是爬虫应用的实践样例。
9. shopping-management-system
star:2.9k
该项目为多个小项目的集合,并且在持续更新中。内容包括网购管理系统、图书管理系统、超市管理系统等。适合Java基础到入门的爱好者。
10. 会议系统
star:2.6k
支持音频、视频、幻灯片(带有白板控件),聊天和屏幕的实时共享。用于在线学习可以实现:
另外,程序员多刷算法题好处多多,算法厉害的人进大厂非常容易,这里给大家送一本阿里P8大佬撰写的算法笔记:
祝大家前程似锦,在编码的道路上一马平川。
要是觉得不错的话,那就帮我
@findyi
一个点赞鼓励~
有登录从登录,没登录从首页。总之找一个功能点,大致先跑一个流程,了解下前后端的调用方式等,有了大概印象后,可以深入其中某个点了解业务等。
一上来找不到接口的时候,可以打开浏览器的开发者模式,F12,看看发的什么请求。一步步来就可以了。
可以看看这个
以下经验只针对java而言
工作中恰好经常遇到这种情况 文档没有 技术说明没有 注释没有几个 还没有运行环境 还要研究比较彻底 怎么办呢? 首先确认这套代码主要解决的问题或者主要的用途 然后观察整体的代码分布 也就是包的结构和命名 大体知道每个包中的代码解决的问题和用途 然后大致找到核心包和核心代码 再后想象下要是自己做某些功能需要怎么做 猜测出一些关键字 搜索 分析周边代码 然后再慢慢理出条线 断掉没关系 再继续推断调用这条线的大致代码位置 再继续理出一条线 然后不断地拼接 这样不断继续。 当然 你也可以找入口开始分析 就个人经验 这样容易思维乱掉 看实际情况吧
这事情我做的很多,讲讲自己经验。
1.有文档肯定先看文档,先看设计文档,产品的、技术的设计文档,接口文档写的好的可以看看,要是写的不好不着急看。
2.把项目用到的外部库先简单扫一遍,工具类的知道做什么的就可以,主要是框架类的,对产品实现的框架要理解,至少可以知道至少要有哪些组件或实现接口
3.现在才到了需要看项目代码的部分:
先看类包路径(非常不爽很多java程序员把类路径搞的太深太细,典型的架构大于实现):
一般有两种分法,一种是任何一个模块都会按照model、controller等等方式分开,这种是我深恶痛绝的做法,因为这么分开和没分开其实是没有区别的,遇到这种情况通常只要看controller或service/facade就可以了(通常这样分的结果是目录里的类非常非常混乱);
另一种是模块内按逻辑分开,通过作用域修饰符设定访问权限,这样阅读的时候很爽,因为可以生成javadoc来看,private不生成doc,只需要看公开的部分,这样一眼就可以看出来开发者为自己开发的包的使用者所定的规矩;
然后再看接口和数据对象类,接口就是上面说的开发者为自己写的类开放的使用接口,数据对象类是我自己的说法,指的是数据库或核心业务单元在项目中的映射对象,这部分主要是开发者对业务的数据模型理解。
上面的基本看明白了,就可以动手做扩展或修改了。大部分类是完全不需要看内部代码的。
如果项目代码架构设计做得好,(除了一些简单的实现总线连接的功能类)通常是 只需要看声明,不需要看实现的。
其实入手的过程,大致可以分为理解定义,寻找示例,动手实践 。向项目的技术主管请教一下,该项目用的是什么架构。去百度或者google一下该架构的含义以及示例,理解了以后去看代码的结构。把实际代码与理论架构一一对应,去理解代码的逻辑,然后实践。其实对于一个新人来说,也许你根本不清楚架构,框架,设计模式的区别与联系。那么也许
这篇文章适合你,至于项目的逻辑,我并不清楚这句话的含义。
run起来
1,先业务。问题背景。
2,再看设计文档,了解他的解决方案。
3,然后看代码(是不是他的解决方案,实现的怎么样?)
应该大部分人都接手过之前的老项目,也从零开始过新项目。
如果是新项目,肯定是产品经理先需求评审,然后进行架构设计,模型设计,最后进入开发,测试,上线流程。
那么我觉得老项目也类似,有原型图的,就先看prd。然后有测试环境可以访问的,自己跟着流程走一遍,过程中记录一下问题点。然后在找同事或者导师讲讲业务流程,技术架构,技术流程。
最后在结合同事讲的东西,自己看看代码,数据库模型等。过程中,自己在一步一步的画流程图,记录当前项目的问题,优点,缺点等。
先看文档。梳理业务流程。
整体的业务都熟悉一遍,还有每个接口干什么用。
都熟悉了,再看代码。
架构:直接看各种配置文件,web.xml, persistence.xml,build.gradle,pom.xml等等
逻辑:找到数据库链接url,登上去看表
先运行起来看看是干嘛的
有文档的话也参考着看看
从数据库框架了解技术栈
找出各层衔接方式和接口
找几个关键功能看看实现
接下来就在工作中慢慢成长吧
有文档就看文档,没文档就看代码,找个入口,自己debug。
是公司项目的话,找个熟悉项目的老人给你讲解下,再自己慢慢看,岂不是更快?
先把项目起来
大的方向看框架(基本上都是ssh,ssi,mvc)。小的方向看如何接值,如何传值
没那么多玄乎的
基本上都是SSH那些玩意
一些类名基本上都是约定俗成的
阅读原文