3、如何快速入手一个新项目
发布日期:2021-08-17 08:27:58 浏览次数:5 分类:技术文章

本文共 1528 字,大约阅读时间需要 5 分钟。

注:本文参考多篇文章

一个资深开发人员半路加入新团队时,可能第一两个星期他会问一些业务或者技术问题,不过一两个月他就可能在指导那些初级开发人员了。什么原因呢?因为他已经从过往经验里面总结出来一些套路了。

那么套路是什么呢?

 

1. 绝大部分业务系统,它的核心功能都是由增删改查组成然后通过通信、运算和人机交互串起来的,系统的复杂度主要体现在系统规模、性能、稳定性、业务流程、通信等方面。(部分工具类、基础架构类系统可能不一样)

 

2. 绝大部份系统都是遵循某种或几种设计模式分层进行开发的,最最常见的也就是MVC了。其他请参考一下设计模式教程。

 

那么怎么快速熟悉新的项目呢?同样也是套路。

 

1. 先搞清楚新的系统是搞什么的,就问简单几个问题,谁在用这个系统?用这个系统做什么?然后自己根据这些问题去文档找答案。

 

2. 弄清楚系统是怎么分层、分模块的,每层、每个模块都用到了什么技术和框架,之间是怎么通信的。有架构设计文档的话学习一下最好,没用过的技术先查查资料知道个大概。

 

3. 把开发环境搭起来,通过几个典型的功能弄清楚系统里面增删改查、通信、用户交互是怎么实现的。最简单的方法是根据系统的分层,先从前端到数据库把代码疏通一下,搞不清楚的话打开debug模式一步一步走一下。

 

4. 经过上面三个步骤基本上就可以改几个bug和照葫芦画瓢做个功能了。后面重点关注那些没用过的技术和组件:先搞清它的目的、背景、实现原理和功能列表,再照着文档做几个demo,平常工作时把它的文档建个快捷方式,随手查询学习一下。

 

5. 平常开发过程中如果遇到问题首先要相信:

1)绝大部分自己遇到的问题很多人已经遇到过并且解决了 。

2)绝大部分自己遇到的问题在当前系统里面已经有了答案。

3)绝大部分自己遇到的问题在你用的框架和组件里面都有现成的解决方案。

 

6. 对于规模比较大的系统或者系统集合,其实你平时工作接触到的也就是其中的一个系统或者模块,先把自己接触的部分搞定就行了。

 

新接手一个系统,如果你的目的是假设需要你排查一个问题,你就能快速定位代码位置这样的要求即可的话,掌握系统的大体架构和核心流程即可。

 

大体手段都差不多,从全局角度理解问题,拆开看细节实现。

 

1,弄明白系统是什么(定位,以及对外提供的功能)

2,有文档就看系统的设计文档,弄明白系统的模块结构,理解系统是如何构成的。(如果没文档只好看代码目录结构了,然后试图通过模块间的接口梳理清楚模块关系)

3,看一下核心功能实现,理解整个功能流程是如何走通。

 

至于后续如果需要你去优化系统关键流程,优化架构,就需要你对业务、对原理、对实现更深刻的理解了,这个没有什么捷径可走,只能花时间思考和折腾。

 

仅从单个项目的角度而言,有两个思路:

1. 按接口从上往下梳理

2. 按数据库从下往上梳理

 

需要梳理的东西主要有两个:

1. 类/方法/函数之间的调用关系

2. 参数传递与变化

 

通过上面的方法基本能整理出一套从接口到各处理类/方法/函数再到数据库的逻辑链条,然后再具体看每个类/方法/函数的实现,基本就能快速上手了

 

7. 对于老系统,首先建议看一下我另外一个回答:在感觉项目代码的构架不行的时候,你们会怎么办? - Jim Jin 的回答

1)老系统其实满是宝藏,里面有很多你可以借鉴和学习的东西。

2)老系统也满是坑,一个看起来毫不悬念的代码改了以后可能会引发地震。

3)很多你看着不爽的代码其实都是有道理的。

4) 不要在老系统里面继续挖坑。

5)看不懂的代码不要动。

6)在你力所能及的范围内让老系统变的更美好。

转载于:https://www.cnblogs.com/yhxb/p/10756490.html

转载地址:https://blog.csdn.net/weixin_30843605/article/details/95274446 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:小项目之数据库设计经验分享
下一篇:11、java常用单词(转载)

发表评论

最新留言

第一次来,支持一个
[***.108.41.34]2022年05月11日 19时32分12秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

cfa计算机使用方法,cfa计算机使用 2020-01-10 11:49:33
ajax判断输入用户名是否正确,使用Ajax判断输入的用户名是否可用 2020-01-10 11:49:33
开机启动微软sql服务器,使用 SQL Server 服务启动选项 2020-01-10 11:49:34
量子特工显示无法连接服务器,量子特攻安装失败怎么办_量子特攻安装失败解决方法_游戏吧... 2020-01-10 11:49:34
清华大学计算机系71班张晨,本科三篇顶会一作、超算竞赛冠军,2020清华本科特奖结果出炉... 2020-01-10 11:49:32
荣耀v8计算机如何使用方法,荣耀V8 2020-01-10 11:49:32
电脑开机自动联服务器,如何让Mac开机自动连接到NAS或网上邻居上的电脑 2020-01-10 11:49:32
巨型计算机语言主要应用于,计算机应用基础知识复习题 2020-01-10 11:49:32
易语言服务器取cookie,QQ取本机cookie操作空间易语言源码 2020-01-10 11:49:32
ddos云服务器防御,腾讯云服务器被ddos如何防御? | 腾讯云 2020-01-10 11:49:32
小学生计划计算机使用计划,小学生计算机教学计划 2020-01-10 11:49:31
java.awt.image,为什么不是java.awt.image.BufferedImage中的序列化? 2020-01-10 11:49:31
java 列表边传边显示,Java通过引用传递列表的问题 2020-01-10 11:49:31
武汉大学计算机作业,武汉大学计算机学院研究生操作系统作业.docx 2020-01-10 11:49:31
小学计算机课打气球,小学信息技术课程中学生信息素养的培养.doc 2020-01-10 11:49:32
中职学生计算机学情分析报告,中职学生学情分析范文.doc 2020-01-10 11:49:32
计算机网络中对编码与调制,20132184_计算机网络_第三次作业_物理层程序.doc 2020-01-10 11:49:30
计算机控制系统考试题目,计算机控制系统复习试题答案.doc 2020-01-10 11:49:30
幼儿园ppt计算机考试试题,《幼儿园课件制作》期末试卷A卷 2020-01-10 11:49:30
计算机初始配置,怎么将电脑的网络设置初始化? 2020-01-10 11:49:30