1

168zwq

V1

2023/05/24阅读:20主题:默认主题

程序员如何快速上手一个新项目?

今天的文章标题就是我平时被问过的一个高频问题。
确实,很多小伙伴在学习或者接手一个项目的时候,不知道如何快速了解项目。
今天这篇文章我就简单聊聊“如何快速上手一个新项目?面试被问项目经历有哪 些小技巧?”。

下面是正文!


项目学习五步走

一般项目都会有遗留文档,不论是传统的项目开发模式还是敏捷开发模式。上项 目之前自己抽时间看一下相关文档,大概了解一下这个项目整体的情况比如基本 的业务还有技术选型啊这些。

如果项目是单机的话,大部分就是增删改查的逻辑,主要是对于业务的理解。

如果项目是分布式或者微服务的话,会涉及各个服务之间的调用以及一些其他问 题比如限流、分布式锁、分布式 ID 这些,稍微会复杂一些。

不过不论是什么类型的项目,上手的姿势大概是下面几步。

第一步:了解业务

先搞清你接受的新项目:

  1. 是做什么的? 主要面向什么人群使用?
  2. 主要提供了哪些功能?
  3. 项目背景是什么样的?
  4. 项目涉及的关键业务流程是怎么样的?
  5. 项目目前面临的挑战是什么?未来规划是什么?
  6. ......

技术本身就是为了业务而服务,只有首先搞清楚了业务之后你才真正算是步入了 这个项目的大⻔。

第二步:搭建项目开发环境

是骡子是⻢总要拉出来溜溜。所以,第二步我推荐你简单把开发环境搭建一下。 搭建的步骤一般都在项目的 README 文档里面。

搭建完成之后,需要确保项目能够在自己的电脑上正确运行。

第三步:看项目技术架构

这个直接看项目的相关依赖就好。拿 Java 后端项目举例子,如果是 Maven 项目 的话看 pom.xml,如果是 Gradle 项目就看 build.gradle

可能会涉及下面这几部分,但是并不完全。

  1. 项目最底层框架是什么?是 Spring 还是 Spring Boot,又或者是其他框架 呢?
  2. 项目依赖了哪些相关的包?挑重点看,比如数据库是 MyBatis 还是 JPA 或 者是公司自研的框架呢?
  3. 项目使用的什么数据库?是 MySQL 还是 PostgreSQL,又或者是其他数据 库呢?
  4. 项目用到了缓存吗?是 Redis 缓存吗?有没有用到本地缓存呢?
  5. 项目用到了消息队列吗? Kafka 还是 RocketMQ?
  6. 项目的权限管理这块是怎么做的呢?
  7. .......

第四步:看项目的代码结构

项目的代码结构是怎么划分的,比如常⻅的项目可能会分为下面三层(复杂的系 统分层可能会更多)。

  1. Repository(数据库操作)
  2. Service(业务操作)
  3. Controller(数据交互)

如果是 DDD 分层架构的话,可能是下面这样的:

  1. User Interface(用户界面层)
  2. Application(应用层)
  3. Domain(模型层)
  4. Infrastructure(基础实施层)

不同的公司对于项目的结构的划分可能也不同,不过大体都是类似的。比如《阿里巴巴Java开发手册》中所推荐的项目代码结构是下面这样的。

第五步:从功能主线/问题出发研究项目源码

一个比较成熟的项目的源码量是非常多,我们不可能都完完整整地看完,也没有 必要。

你可以通过 debug 调试,研究项目核心代码逻辑。比较推荐的方式就是通过一个 功能主线(比如 Dubbo 是如何暴露服务的?)或者问题(比如 ?)出发。

对于企业项目来说,大部分还是知道如何进行 debug 调试的。但是,对于 Spring 这种顶级开源框架来说,很多人就不知道怎么打断点了。

我比较推荐的是你可以先把源码拷⻉到本地,然后运行源码中提供的 Demo。对 于你想研究的问题比如 Spring 的 IoC 源码,你先去找找对应的 API 调用方式的 Demo,然后根据 Demo 中的方法调用来研究整个过程。如果你觉得这种方法比 较难的话,你也可以先去网上看看别人的分析。

分类:

后端

标签:

后端

作者介绍

1
168zwq
V1