如何接手一个新项目

项目好与很差,它就在那里;架构优雅或者丑陋,它就在那里;注释有或者没有,它还在那里;文档乱或者不乱,它始终都在那里。不论它是什么样子的,线上就那样跑着。nginx

通常来说,项目分为两种:git

一、为业务服务的项目,好比公司内部项目、电商项目、各类 app 项目;github

二、为技术服务的项目,好比开源中间件项目(dubbo、spring cloud、各类数据库中间件、各类缓存方案等);web

首先说第二种项目,它专一于提供某一个或几个特定的功能。相对来讲,这种项目技术实现上可能须要对这一领域有比较深的要求,但职责单一,目标明确。并且这种项目都是面向开发人员的,因此设计文档、接口文档、使用文档都会比较齐全。并且这种项目通常都会承担比较核心、比较重要的功能,而且还会在公司内部开放,甚至直接开源到社区。因此要经得起考验,代码都会写的比较规整。redis

开放出去,若是架构和代码不规整,就不会有人在 github 上 star,也不会有多少人使用。没人用事小,被人骂事大,让团队和公司丢脸更了不起了。因此这种项目比较容易接手,由于在文档和代码都比较规整的状况下,只须要在技术上下功夫就能够了。spring

原本项目应该有齐备的文档的,而现实中的好多项目每每不是这样的。因为各类各样的缘由,好比框架比较老,人员变更,业务变更等,可能形成项目结构变的比较混乱。那么当咱们应该如何快速的接手这样一个项目呢。数据库

一、首先须要了解项目的的表现形式,什么是表现形式呢,就是说这个项目是提供 web 端服务,仍是提供 App 端服务,仍是其余形式的服务,又或者是混合了多种形式。咱们比较容易理解具体的东西,而对于抽象的事物理解起来有必定的难度。因此看到项目最终的表现形式,能够对应到咱们的项目结构中,这样一来,对于理解项目就比较容易了。后端

二、了解项目的部署架构。部署架构包括从客户端一直到数据访问层。这其中包括服务器系统版本,后端服务器软件类型(tomcat 、jetty 等),负载均衡配置,配置了多少台,用的是 nginx 仍是 HA ,有或者是其余的。先后端交互方式,缓存是用到什么方案,是 redis 仍是其余的,单机主备仍是集群方案。数据库用的什么,有没有集群,有没有异地。数据库中间件用的什么框架等等。这个时候,最好有部署架构图拿来看一眼,若是是比较复杂的项目,确定开发和运维会有部署文档的。若是没有完备的文档,建议要了解清楚以后,本身手动画一下部署架构图。缓存

三、了解项目的代码架构。其中包括项目使用的基础框架,好比是 Spring mvc ,仍是 Spring boot ,又或者是其余的框架,有没有用到 Netty 等其余的比较大的框架。有没有用到分布式 SOA 或者是否使用了微服务。用到分布式方案是 dubbo 仍是 spring boot ,其中重点关注这些框架所用的版本,有些框架的版本可能比较老旧。tomcat

四、了解项目功能模块。到这里就和业务有关了,功能模块的划分通常和业务有关,好比注册登陆模块、用户管理模块、订单管理模块、财务相关的服务模块等等。以及模块之间的依赖关系,是否是存在项目引用,是否是存在 RPC 调用或 http 服务调用关系等。这个时候,最好有完整的模块或服务依赖结构图,若是没有,最好在了解了项目结构以后,本身手动画一张。

五、最后,就是要理解具体的业务了,而后根据业务查看、调式对应的代码以及数据结构。

整体上要遵循从总体到细节,从高纬到低维的一个过程。若是能作好如下几点就最好了:

一、若是项目不是很复杂,最好能够有测试环境或者本地环境搭建起完整的项目架构。

二、若是项目很复杂,至少要保证本身负责的部分能够经过一些方法能在本地搭起来。

三、若是要在项目上作功能扩展,要遵循团队或项目的规范,不要独树一帜,这样会给后期维护带来麻烦。

四、修改功能以后,要维护好对应的文档。

想到哪儿写到哪儿,好多东西没写到位。

微信公众号,多谢关注:

还能够加入 Java 微信讨论群(若是二维码过时:请加微信:fengdezitai001 ,备注:cnblogs):

相关文章
相关标签/搜索