引言
相信很多小伙伴都有过“继承”学长“远古项目”的经历,你的学长也好指导老师也好,会让你去续写一个项目,或者是继续维护下去,那么突然拿到上万行的代码我们应该怎么办呢(特别是其中有一些技术还特别远古,像看天书一样)
本文讲述了我的亲身参与的项目改写,希望可以帮助大家解决这个问题
一、源码的解读
我们拿到的源码可能多种多样,相对应的问题也可能层出不穷,如项目框架不熟悉,项目结构不清晰,变量常量的意义不明确,数据库看不懂甚至是项目源码出现语法错误等。
对于这些问题本文都有相应的解决办法,便于各位源码解读的展开。
以下是我们队伍解读源码的历程,可作参考
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