• 请不要在回答技术问题时复制粘贴 AI 生成的内容
javaWeber
V2EX  ›  程序员

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

  •  
  •   javaWeber · Oct 11, 2019 · 3293 views
    This topic created in 2586 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

    18 replies  •  2019-10-12 17:07:01 +08:00
    SmiteChow
    SmiteChow
    Oct 11, 2019
    1
    ut 覆盖下重构

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

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

    给别人扫尾的工作我做的太多了,典型的一次就是.NET 同事去修改某网站,网站使用的是国外比较小众的.NET 框架,他三个月没搞定,最后我出马了,从学习掌握到开发完成前后就花了一周时间。
    ---------------------------------------------------------------------------------------------
    犀利犀利~
    javaWeber
    javaWeber
    OP
    Oct 12, 2019
    14
    @taogen 老有没有单元测试代码
    --------------------------------------------
    没有单元测试,没有文档。。也没人讲解。我哭了。根本没法维护啊。
    javaWeber
    javaWeber
    OP
    Oct 12, 2019
    15
    @zjsxwc 重构不是重写
    -----------------------------------------------------------------------------------------------
    我个人理解的重构是某个类、接口、代码块或者服务的重新组织提炼,这个项目已经千疮百孔了。。应该算是重写吧。
    lithium4010
    lithium4010
    Oct 12, 2019
    16
    建议动手干起来完事儿
    大不了失败了也是老板背锅
    lithium4010
    lithium4010
    Oct 12, 2019
    17
    具体做的时候具体问题仔细分析做好就行了
    lithium4010
    lithium4010
    Oct 12, 2019
    18
    看你上来就全部框架换掉,不清楚收益是什么
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4417 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 06:06 · PVG 14:06 · LAX 22:06 · JFK 01:06
    ♥ Do have faith in what you're doing.