某国企工作,接手一个 2016 年的项目,当时是由一个外包公司人员和前一个同事开发(目前都已离职),现在要二次开发。
目前情况是,有源代码,但是没有项目文档,环境也不清楚怎么样,网络和数据库啥的,项目跑不起来,也不知道问谁。现在想啃这个源代码,实在是啃不动,很多封装的方法,自定义注解之类的,看不懂有点痛苦,有啥好的办法吗?
![]() | 1 liuxey 2020-05-06 15:03:51 +08:00 ![]() 2016 年的项目有可能是 2006 年的架构,这个情况不要死磕,向上级反应寻求外援,最好找到之前的开发人员 |
![]() | 2 lhx2008 2020-05-06 15:20:06 +08:00 via Android 先想办法跑起来 |
![]() | 3 Zhangxiaopa 2020-05-06 15:21:24 +08:00 先想办法跑起来 |
![]() | 4 Nathanzheng 2020-05-06 15:26:32 +08:00 ![]() 先想办法跑路 |
![]() | 5 shiguiyou 2020-05-06 15:27:32 +08:00 先想跑路 |
![]() | 6 mmnsghgn 2020-05-06 15:29:32 +08:00 先想办法跑 |
7 ice2neet 2020-05-06 15:29:46 +08:00 先想办法跑路起来 |
![]() | 8 yalin 2020-05-06 15:29:51 +08:00 能问则问,能搜则搜( Google or IDE 全局搜索),尽可能的了解这个技术架构,能本地调试最好 |
9 uxstone 2020-05-06 15:35:38 +08:00 跑路 |
10 clayyj1210 2020-05-06 15:36:13 +08:00 先跑 |
![]() | 11 berumotto 2020-05-06 15:36:32 +08:00 想办法跑起来,先看用了哪些框架,如果有框架好办,去找框架的文档,没框架或自写的就比较麻烦 |
12 huntcool001 2020-05-06 15:39:55 +08:00 离职吧... 这种入职面试的时候就要问清楚 |
![]() | 13 Leigg 2020-05-06 15:45:48 +08:00 via Android 没文档没交接基本不用想了 |
![]() | 14 xuanbg 2020-05-06 15:59:27 +08:00 外包出去 |
15 LICOEVE 2020-05-06 16:01:48 +08:00 代码量不多的话 啃源码 |
16 mjy123456 2020-05-06 16:02:56 +08:00 先跑 |
17 yukiloh 2020-05-06 16:04:25 +08:00 via Android 哈哈哈哈跑起来………… |
![]() | 18 ClericPy 2020-05-06 16:04:54 +08:00 跑的起来你还能单步调试走一波 跑不起来是怎么交接的... 话说你这问题的难度, 就像一道面试题一样开放 |
![]() | 19 paradoxs 2020-05-06 16:04:58 +08:00 报错显示什么,截个图丢上来看看。 |
![]() | 20 murmur 2020-05-06 16:05:54 +08:00 资金到位不,如果生产还能跑的话可以把 tomcat 直接拷过来,如果生产挂了的话就呵呵了 |
21 nianyu 2020-05-06 16:10:19 +08:00 给你时间一点一点看还行 慢慢整理逻辑 不给时间或者给的时间不够基本无解, 你根本不知道以前的业务逻辑 代码逻辑是什么样的. 有许多临时 hack 一下的代码,你不知道业务根本理解不了为什么这么写 |
![]() | 22 312ybj 2020-05-06 16:10:37 +08:00 ![]() 我目前在改同事离职的 bug,写得跟狗屎一样,半点逻辑没有,他是写不下去才跑路的。 我在他跑路前问清楚了配置项的意义(半点注释没有,全是重复代码),现在还在改。 你先把项目运行起来,然后走根据功能进行搜索, 前台访问的接口肯定在后台有对应 ,ctrl + \ 可以根据 URL 快速定位代码位置( idea 中),F11 可以在 idea 中加入 Bookmark,shift + F11 可以查看所有书签, 反正就是慢慢啃 |
![]() | 23 Mrun 2020-05-06 16:11:40 +08:00 跑不起来看懂个啥? |
24 leahoop 2020-05-06 16:15:17 +08:00 跑 |
![]() | 25 violetlai 2020-05-06 16:24:10 +08:00 一步一步跑 然后重构 |
26 iamnotarobot0 2020-05-06 16:55:23 +08:00 先找文档 再找人,讲解一下大概的架构 实在不行,再看代码,上手调试,写单测,重构 |
![]() | 27 nicebird 2020-05-06 17:15:37 +08:00 两个人也没多大代码量,看个几天就差不多了吧 |
28 annielong 2020-05-06 17:19:41 +08:00 目测可能是 java |
![]() | 29 wizardoz 2020-05-06 17:47:22 +08:00 ![]() 先把业务搞清楚,业务了然的情况下去看源码应该不难。 如果想通过看源码来了解业务,本人不敢想,厉害一点的可能可以。 |
![]() | 30 otakustay 2020-05-06 17:50:01 +08:00 别看,去修几个 BUG |
![]() | 31 pushback 2020-05-06 18:35:32 +08:00 跑(路)起来 |
![]() | 32 pushback 2020-05-06 18:37:14 +08:00 憋说了,今晚上就长跑十公里 |
33 hakono 2020-05-06 18:57:39 +08:00 via Android 方向错了,看代码之前你首先得要把整个业务流程搞懂了再去看,一切代码都是为业务服务的,这样才能搞懂项目里那匪夷所思的代码是干嘛的。 |
34 nightwitch 2020-05-06 19:21:52 +08:00 跑不起来还说什么。 至少要能确认手上的源代码和线上的是符合的吧,万一手上的代码落后线上的几十个版本你怎么搞 |
![]() | 35 gaigechunfeng 2020-05-06 19:23:44 +08:00 祖传代码确实比较痛苦 |
![]() | 36 lithbitren 2020-05-06 19:33:58 +08:00 ![]() 碰到过没有文档的祖传代码,十几级的调用栈都可以接受,看懂了,勉强全部重构了。 后来碰到了几十级甚至更多的调用栈,直接放弃阅读了,独立于黑箱打补丁造轮子拉倒了。 |
37 polo3584 2020-05-06 19:39:23 +08:00 跑得起来修修补补还行,跑不起来就放弃了 |
![]() | 38 ob 2020-05-06 19:54:47 +08:00 via Android 楼上的要笑死人,哈哈,先找到 main |
![]() | 39 darksword21 PRO 先花一周时间跑起来,然后需要写什么看看有没有类似的写过的 ctrl v 过来改。。 没别的招感觉。2016 年,那架构确实可能是 2006 或者 2001 的 |
![]() | 40 itechify PRO 打码贴一下图?给各位老哥看下目录,猜测是什么后端什么前端才有的说 |
![]() | 41 Acoolda 2020-05-06 23:04:58 +08:00 via Android 先跑起来,再慢慢改 |
![]() | 42 linvon 2020-05-06 23:15:49 +08:00 楼里的评论越来越.... |
![]() | 43 IvanLi127 2020-05-06 23:22:12 +08:00 via Android 找一个同事,一起吐槽 |
![]() | 44 fixend 2020-05-06 23:36:44 +08:00 via Android ![]() 我接过一个维护了十多年的项目,无数人接手过,而且都是毕业生接手的,代码极恶劣,无文档,无注释,无 svn 提交记录,各种不知为何注释起来的代码,重复类似功能的函数,大量永远不会调用的代码,变量一堆 a,b,c 这样命名。 修了两个严重 bug 后,我看不都不看,直接整个重新写了,还好项目不大,二十几万行,重写后十万行不到。 |
45 marcomarco 2020-05-07 07:37:58 +08:00 via iPhone 要先明确一点,你是来上班挣钱的,你懂吧? |
![]() | 46 zhw2590582 2020-05-07 08:28:56 +08:00 这就非常累了,跑吧 |
47 oops1900 2020-05-07 08:38:58 +08:00 先删库后跑路 |
![]() | 48 hankli 2020-05-07 08:48:26 +08:00 跑路吧 |
![]() | 49 AkiseAru 2020-05-07 09:19:54 +08:00 先跑路,这样没人交接很累啊 |
![]() | 50 hahaayaoyaoyao 2020-05-07 09:20:09 +08:00 要外包吗? 我帮你重写一个 |
![]() | 51 kiracyan 2020-05-07 09:35:29 +08:00 先跑起来 ,再了解业务。不过让你接手的项目居然跑不起来,跑路的优先级比较高 |
![]() | 52 Felldeadbird 2020-05-07 10:13:28 +08:00 问人是肯定要的,除了问题,自己也要先在本地调试运行成功,根据 IDE 或者编译器 提示的错误信息 去修复好错误。项目跑起来了,就好做二开了。 |
53 weipt 2020-05-07 10:34:06 +08:00 如果以前的资料不全,那就靠你的经验了。 如果你的经验不足,那就跑路吧 |
![]() | 54 VictorJing94 2020-05-07 10:37:26 +08:00 先找入口,从 homepage 看或者 main 函数看起,一手梳理业务一手梳理 db |
![]() | 55 zhjie 2020-05-07 10:46:50 +08:00 啃得动是本分,啃不动就炒你。 最好用的办法就是逃避。 |
56 arvinsilm 2020-05-07 11:08:44 +08:00 ![]() 建议列一堆致命性问题(可以随便编,反正也没人懂这个项目了),然后要求做一个新项目,不做二次开发。问题可以往安全性上靠,国企现在很在意这个。当然能不能撑得住,会不会背锅要你自己评估 |
![]() | 57 paoqi2048 2020-05-07 11:21:15 +08:00 快逃! |
![]() | 58 keelng 2020-05-07 11:30:44 +08:00 这种情况说服领导放弃就完了,自己重新组织团队写一个更省时省事,修改一个完全没有任何资料支撑的项目,改到你想 s |
59 silencil 2020-05-07 12:30:56 +08:00 via Android 我这 200 多兆的项目也没有文档,还好跑起来了 |
![]() | 60 zhouwei520 2020-05-07 12:35:15 +08:00 如果有源码你看不懂的话,大概率你是无法重写的。 框架方面建议使用谷歌搜索,一般都是套的别人的框架重构的。 从业务到代码,多找业务问清业务流程,然后对照代码看。 |
61 paulee/a> 2020-05-07 13:28:07 +08:00 找人跑起来,跑不起来的项目基本没法看;如果非要看,先找入口文件、配置文件(这都是建立在架构合理的情况下)... |
![]() | 62 purensong 2020-05-07 14:21:05 +08:00 看评论都说跑路的,我想问你们自己遇到也跑路吗,为什么不能先努力一下,至少把数据库删了再跑,避免坑害后人 |
![]() | 63 TesterCC 2020-05-07 14:26:36 +08:00 看下能不能本地搭建开发环境跑起来,能本地跑起来的话还能再折腾下,不能的话参考前面朋友们的套路吧 |
![]() | 65 xingyuc 2020-05-07 16:41:53 +08:00 @huntcool001 这种你搞懂了就稳了,除非他换系统 |
![]() | 66 ytmsdy 2020-05-07 16:51:58 +08:00 0.先跑起来, 1.用户登陆开始看,跟踪整个 URL 配置,函数逻辑,数据库连接方式 2.看看系统里面有没有查询模块,如果有那就到具体的页面,然后熟悉一下整个数据结构。 3.修改的话,千万不要在老方法上做修改。最好的办法是把原来的函数复制一份,然后在函数入口上做相应的区分。 万一出问题,直接把函数名字改回去就恢复了。 |
![]() | 67 spadger 2020-05-07 17:01:54 +08:00 传说中的屎山? |
68 sunriz 2020-05-07 19:33:03 +08:00 重构代码整洁之道 |
![]() | 69 cpstar 2020-05-07 19:44:39 +08:00 能看源代码就好办了。甚至还能反演出开发者的思路。 我经常干这种事情而且乐此不疲,还能在某些混淆了源码的地方找出一些端倪。 方法很简单,就某个场景,逆向运转系统,调用关系一个一个捋。 总之一件事:耐心。 |
![]() | 70 cpstar 2020-05-07 19:45:54 +08:00 |
![]() | 71 encro 2020-05-08 09:48:57 +08:00 你用了一个合格的 IDE 吗? 你了解业务了吗? 你熟悉代码基础语法了吗? 你会搜索吗? 如果以上回答是,你可以自己慢慢看代码了, 如果回答否,那么是不可能看懂的。 |