首页 > 其他分享 >对于“远古项目”的再开发和维护(如何处理学长的老旧项目)

对于“远古项目”的再开发和维护(如何处理学长的老旧项目)

时间:2024-11-09 13:16:23浏览次数:5  
标签:功能 老旧 项目 代码 扩展 接口 学长 源码

引言 

相信很多小伙伴都有过“继承”学长“远古项目”的经历,你的学长也好指导老师也好,会让你去续写一个项目,或者是继续维护下去,那么突然拿到上万行的代码我们应该怎么办呢(特别是其中有一些技术还特别远古,像看天书一样)

本文讲述了我的亲身参与的项目改写,希望可以帮助大家解决这个问题

一、源码的解读

我们拿到的源码可能多种多样,相对应的问题也可能层出不穷,如项目框架不熟悉,项目结构不清晰,变量常量的意义不明确,数据库看不懂甚至是项目源码出现语法错误等。

对于这些问题本文都有相应的解决办法,便于各位源码解读的展开。

以下是我们队伍解读源码的历程,可作参考

1)源码的上传

作为一个团队合作的项目,如果每个人的项目代码不同步将会使大家都合作出现很大的困难,所以拿到源码的第一步上将代码上传 可以使用gitee、github等网站实现代码的推送与拉取。

我们团队使用的是gitee。这里应掌握一些比如gitee的基本使用规范,如idea如何配置,项目如何拉取,如何推送,代码冲突时如何解决,项目的分支如何安排。

这里解释一下我们的分支安排:源码我们放在了一个分支中,该分支一直更新解读源码的文件,另建一个分支是对源码的改错或完善,当然,这里只是举例子,大家完全可以再建一个分支,比如“项目拓展分支”等。

当大家解决的团队沟通问题之后我们可以进行源码的正式解读。

2)源码框架和所用技术的取舍

对于源码框架的所用技术的分析和解读是刚接触代码最困难的一步,可能源码所用的项目框架不熟悉,项目的文件结构不清晰,代码的风格不适应,或者是源码前后端不分离,而你们的团队前后端分离这些都要做取舍。

拿我们当时的情况来举例,我们所接触的源码框架我们并不熟悉前后端不分离,甚至项目的启动都成了一个难题,包括项目的技术也是很久远的技术,项目的文件结构也不是我们所熟悉的技术,我们当时的决定是将框架改成我们所熟悉的springboot+vue结构,项目文件的结构我们先是套用了苍穹外卖的结构,之后再依据需求改动。

对于技术的改动,我们引入了一些我们所熟知的插件,对代码进行了简化包括但不限于分页插件、阿里oss、swagger等。对于项目的登录方式,照片储蓄等都做了改进。这里我们当时的分工是,先五个人都去解析源码的框架,所用的技术,之后讨论其中技术的取舍,关于代码在新框架结构里面的呈现方式由一个同学完成。

另外,在新的项目框架中,项目的依赖不冲突,项目启动没有bug也是一项技术活,不管项目是否可以实现相应功能,如果项目可以成功启动那就是成功了。以上操作建议一到两天完成。

3)源码内容的解读

大部分源码一般会分为管理端和用户端,这里拿后端举例,我们的分工是两个人负责管理端代码的解读,两个人负责用户端代码的解读,因为刚改框架的源码可能出现诸多bug所以我们的解读是在没有改框架的源码上进行的解读,源码解读的细节要求如下:

1.对每个接口进行注释,便于以后源码的复习

2.对源码的解读进行视频录制,方便没有解读这一段源码的组员对该段源码的快速理解

3.生成简短的接口文档,更好理解代码

这里不需要对项目的bug进行排除,只需要完成项目代码的初步解释。这一步推荐一到两天完成

4)数据库的处理

数据库建议每个人都要有所了解,理解数据库推荐使用idea的视图功能,方便对数据库的全面理解。注意连接数据库的用户名和密码,要和项目文件中的一致

5)项目接口的测试和项目代码的改错

经过几天对代码的了解,现在可以对项目的接口进行测试了,这里是工作量最大的一个步骤,这里推荐使用swagger的项目接口生成功能,在swagger中测试接口更方便快捷。

在接口测试的过程中即可实现对项目bug的改错。在测试接口之前记得搞清楚将项目登录方式,如果是jwt令牌的方式,记得将请求头填上,另外一点值得注意的是测试如登录接口,删除接口等接口时,要确保你的数据库中有相应的数据,比如要测试一个删除接口,删除小明的数据,但是你的数据库中并没有小明的数据,这时就不是代码的问题。

知道了一些细节问题之后,给大家推荐一种快速的接口测试方法:

先使用swagger提供的json模板,对必要的数据进行调整,之后提交数据,首先保证输入数据没有问题,如果返回结果正确,在数据库中也有体现,即是接口没问题,如果返回300.503等等这时返回idea,将错误信息交给chatgpt处理,根据步骤进行调整即可,对于一些小问题,比如变量名写错了,传输数据格式不对等不易发现的小问题,该方法可以较快发现并改正。

这一部分建议两三天完成。

二、项目的功能扩展

当项目的源码处理完成之后,大家就可以开始项目功能都扩展了,对于项目功能的扩展,大家要明确,一个项目是写不完的,项目是永远可以完善的,功能是永远可以扩展的,扩展的方向包括我们会的,也包括我们不会的,扩展的过程,也是大家学习并提升自我的过程。

如果大家都思维只能停留在解读源码的阶段,这样说项目是止步不前的。有些功能可能我们现在不会实现不代表一个星期后不会。功能都扩展需要大家打开思路尽可能参与其中。

1)扩展功能的挑选

功能的扩展有两个方面,一个是宽度上的扩展,一个是深度上的扩展。

宽度方向,比如项目原本有用户发表文章的功能,现在可以扩展用户发表短视频的功能。

深度方向,比如,原本用户可以搜索文章,现在扩展一个搜索智能推荐的功能。

挑选扩展的功能时,主要考虑的是该功能能否丰富项目的内容,而不是该功能我是否目前能实现。

2)功能的实现分工

这里推荐是一个人负责一个模块,所谓术业专攻。

3)功能扩展的团队合作

建议团队每个人每天更新进度,在项目新建一个文件夹,上面记录待扩展功能,每个人负责的功能。

值得注意的是,在数据库的设计层面大家要避免数据库表重名等问题,这里建议大家都建表语句都放在项目中的一个文件夹当中,便于解决数据库冲突问题和数据不同步问题。

在扩展功能实现后,要生成相应接口文档,相关代码讲解视频,实现逻辑的讲解等

4)功能扩展的自我实现

功能都实现要经历一个 “功能—〉技术栈—〉技术栈学习—〉功能实现” 的流程。

先去了解该功能需要什么技术栈,再去学习该技术栈,之后实现该功能,这样可以快速完善我们的项目。对于项目的实现我们有独到的优势,那就是项目之间可以互通借鉴

打个比方,如我们项目是一个编程学习网站,而另一个组项目是在线编程考试平台,编程学习网站可以内嵌一个在线编辑器,这样就可以借鉴在线考试平台的在线编辑器的实现来完成。

结语

这是结合我自身经历写出总结出的经验,当然,大家每个人的情况都可能不一样,本文只是给大家提供一种新的解决问题的思路,希望大家可以解决自己现在面临的问题!

标签:功能,老旧,项目,代码,扩展,接口,学长,源码
From: https://blog.csdn.net/2301_82067992/article/details/143643476

相关文章

  • Hyperledger fabrics实战项目(区块链溯源)
    Hyperledgerfabrics是什么Hyperledgerfabric是一个全新解决问题的方式,是基于区块链的企业级分布式账本,通过智能合约来解决多个组织间的信任问题.Hyperledgerfabrics特点模块化:组件可定制,可插拔设计,隔离功能可扩展:支持多个共识机制,高性能处理,分区和多通道超安......
  • 鸿蒙项目实战(三):自定义弹窗开发实践
    自定义弹窗选型合理选择不同的系统能力实现弹窗,有利于提升应用开发效率,实现更好的功能需求,因此了解自定义弹窗的选型和差异非常重要。在应用开发中,为了选择出合适的弹窗选型,从使用场景上,需要重点关注以下两点:弹窗与界面代码解耦在开发业务逻辑时,例如遇到一些网络请求失败的场......
  • 六、Spring Boot集成Spring Security之前后分离项目认证流程最佳方案
    文章目录往期回顾:SpringBoot集成SpringSecurity专栏及各章节快捷入口前言一、SpringSecurity默认认证流程及其优缺点1、SpringSecurity默认认证流程总结2、优缺点二、前后分离项目认证思路1、前后分离项目认证流程(基于默认流程优化)2、前后分离项目认证流程关键组件......
  • GitHub每日最火火火项目(11.7)
    项目名称:DataExpert-io/data-engineer-handbook项目介绍:“DataExpert-io/data-engineer-handbook”是一个非常有价值的资源库。这个项目收集了与数据工程相关的各种学习链接,涵盖了数据工程领域的方方面面。对于想要深入了解数据工程的人来说,它就像是一个知识宝库。无论是......
  • day20-21之间的项目实战:若依ruoyi开发(可以跳过)
    一,项目概述官网文档地址:http://doc.ruoyi.vip/rouyi是一个后台管理系统,基于经典技术组合(springboot,apacheshiro,mybatis,thymeleaf)主要是让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。系统要求JDK>=1.8myslq>=5.7maven>=3.8二,开发环......
  • flask毕设springboot+vue的网上书店项目(论文+程序)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网技术的迅猛发展,电子商务已成为现代社会中不可或缺的一部分。网上书店作为电子商务的一个重要分支,凭借其便捷性、高效性和广泛的......
  • ican机器视觉仿真项目一
    相机选型3656x1492产品大小245,相机工作长度782成像面就是上面芯片尺寸相机选了1000w,镜头的也要1000w,焦距选择50mm,接近45视野长边小于产品大小,但是条形码在中间区域,短一点不影响,主要看视野短边 短边满足要求选择光源,印刷表面有反光,选同轴位置修正,先找出两条直......
  • 【QT项目】QT6项目之基于C++的通讯录管理系统(联系人/学生管理系统)
    目录一.项目背景二.创建工程工程创建添加文件 联系人类 功能类三.功能实现联系人类person.cppperson.h 查查询按钮槽函数返回按钮槽函数findperson.cpp:增addperson.cpp:删deleteperson.cpp:改changeperson.cpp:!!显示!!displayperson.cpp:清除clearp......
  • Java 面试用什么项目?全是商场秒杀 RPC,我吐了
    看了几百份简历,真的超过90%的小伙伴的项目是商城、RPC、秒杀、论坛、外卖、点评等等烂大街的项目,人人都知道这些项目烂大街了,但大部分同学还是得硬着头皮做,没办法,网络上能找到的、教程比较完善的就这些项目了,做的话好歹有个项目,不做那就真能写学校做的垃圾学生管理系统了。我深......
  • 某事业单位转型公益二类后岗位梳理项目纪实
    某事业单位转型公益二类后岗位梳理项目纪实——公益一类事业单位转型二类后,如何优化岗位配置,梳理岗位职责【客户行业】事业单位【问题类型】岗位梳理【客户背景】某地公证机构于20世纪90年代经批准设立,是该市司法局直属国家公证机构,属于公益一类事业单位,由国家全额拨款。......