要不要重写?如何重写一个老项目? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
javaWeber
V2EX    程序员

要不要重写?如何重写一个老项目?

  javaWeber 2019 年 10 月 11 日 2812 次点击
这是一个创建于 2369 天前的主题,其中的信息可能已经有所发展或是发生改变。

最近在折腾一个老项目,用的是 struct2,ibatis,springMvc,memcache,solr,activeMq.

我打算整改成 springBoot,mybatis,redis,es,kafka。。

但是我对这个项目一知半解。问了交接的人,总说让我自己看代码,也没有文档。

有时候 memcache 莫名其秒就宕了。还有些定时任务也是看得莫名其秒,完全不知道更新了哪些表。

关键是很多功能也还不清晰,不知道还有哪些雷。

这个项目现在的某些接口的日查询,估计几十万吧。

不重写,以后没法做新需求。如果重写,又可能有整改失败的风险。

这个项目如果整改成功,我的水平应该会有很大提高。如果改不好,那肯定是要背锅的。

要不要重写?如何重写一个老项目?有哪些坑要注意?

18 条回复    2019-10-12 17:07:01 +08:00
SmiteChow
    1
SmiteChow  
   2019 年 10 月 11 日
ut 覆盖下重构

1. 假设 a 模块依赖 b 模块,现在要重构 b 模块
2. 梳理 b 模块所有对外接口,需要保留的使用 ut 覆盖,需要重构的先使用旧接口组合实现并使用 ut 覆盖
3. 重构 b 模块,确保所有 ut 不被破坏
coolair
    2
coolair  
   2019 年 10 月 11 日 via Android
别重写
zhao28
    3
zhao28  
   2019 年 10 月 11 日
如果是希望提升技术和重新整理的话,可以私下用自己的时间,我们这边之前有一个项目,也是到了无法维护的程度,后面用私下的时间重写了,测试没有什么问题,就替换了生产的
IMCA1024
    4
IMCA1024  
   2019 年 10 月 11 日
摁个 F12 开这系统各个功能点都摁,看请求一直到 dao 层。
看多几个大概就差不多了
hotcool100
    5
hotcool100  
   2019 年 10 月 11 日
NB 的人(比如我)是可以快速熟悉上手老项目,且能修复完善,而不是从头开始。

给别人扫尾的工作我做的太多了,典型的一次就是.NET 同事去修改某网站,网站使用的是国外比较小众的.NET 框架,他三个月没搞定,最后我出马了,从学习掌握到开发完成前后就花了一周时间。
Caballarii
    6
Caballarii  
   2019 年 10 月 11 日
吃饱撑的
taogen
    7
taogen  
   2019 年 10 月 11 日 via Android
老有没有单元测试代码
zjsxwc
    8
zjsxwc  
   2019 年 10 月 11 日 via Android
重构不是重写
haiyang416
    9
haiyang416  
   2019 年 10 月 11 日
除非你对项目了如指掌,否则不要重构。
不过私下重构着玩倒是无所谓,只要你的时间足够。
ai277014717
    10
ai277014717  
   2019 年 10 月 11 日
从写单元测试开始
GuangXiN
    11
GuangXiN  
   2019 年 10 月 11 日
没有测试保证就不要轻易搞大的重构
LeeSeoung
    12
LeeSeoung  
   2019 年 10 月 11 日
没有测试,重构风险很大。。如果只是想练手 可以自己玩 然后跟线上的对比
javaWeber
    13
javaWeber  
OP
   2019 年 10 月 12 日
@hotcool100 NB 的人(比如我)是可以快速熟悉上手老项目,且能修复完善,而不是从头开始。

给别人扫尾的工作我做的太多了,典型的一次就是.NET 同事去修改某网站,网站使用的是国外比较小众的.NET 框架,他三个月没搞定,最后我出马了,从学习掌握到开发完成前后就花了一周时间。
---------------------------------------------------------------------------------------------
犀利犀利~
javaWeber
    14
javaWeber  
OP
   2019 年 10 月 12 日
@taogen 老有没有单元测试代码
--------------------------------------------
没有单元测试,没有文档。。也没人讲解。我哭了。根本没法维护啊。
javaWeber
    15
javaWeber  
OP
   2019 年 10 月 12 日
@zjsxwc 重构不是重写
-----------------------------------------------------------------------------------------------
我个人理解的重构是某个类、接口、代码块或者服务的重新组织提炼,这个项目已经千疮百孔了。。应该算是重写吧。
lithium4010
    16
lithium4010  
   2019 年 10 月 12 日
建议动手干起来完事儿
大不了失败了也是老板背锅
lithium4010
    17
lithium4010  
   2019 年 10 月 12 日
具体做的时候具体问题仔细分析做好就行了
lithium4010
    18
lithium4010  
   2019 年 10 月 12 日
看你上来就全部框架换掉,不清楚收益是什么
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6153 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 28ms UTC 03:07 PVG 11:07 LAX 20:07 JFK 23:07
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86