某国企工作,接手一个 2016 年的项目,当时是由一个外包公司人员和前一个同事开发(目前都已离职),现在要二次开发。
目前情况是,有源代码,但是没有项目文档,环境也不清楚怎么样,网络和数据库啥的,项目跑不起来,也不知道问谁。现在想啃这个源代码,实在是啃不动,很多封装的方法,自定义注解之类的,看不懂有点痛苦,有啥好的办法吗?
1
liuxey 2020-05-06 15:03:51 +08:00 1
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 31
先想办法跑路🏃
|
5
shiguiyou 2020-05-06 15:27:32 +08:00
先想跑路
|
6
zhengjian 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
miaoxinwei 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 2
我目前在改同事离职的 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 1
先把业务搞清楚,业务了然的情况下去看源码应该不难。
如果想通过看源码来了解业务,本人不敢想,厉害一点的可能可以。 |
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 1
碰到过没有文档的祖传代码,十几级的调用栈都可以接受,看懂了,勉强全部重构了。
后来碰到了几十级甚至更多的调用栈,直接放弃阅读了,独立于黑箱打补丁造轮子拉倒了。 |
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 2020-05-06 20:00:12 +08:00
先花一周时间跑起来,然后需要写什么看看有没有类似的写过的 ctrl v 过来改。。 没别的招感觉。2016 年,那架构确实可能是 2006 或者 2001 的
|
40
oneisall8955 2020-05-06 20:27:06 +08:00 via Android
打码贴一下图?给各位老哥看下目录,猜测是什么后端什么前端才有的说
|
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 1
我接过一个维护了十多年的项目,无数人接手过,而且都是毕业生接手的,代码极恶劣,无文档,无注释,无 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
iidestiny 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 1
建议列一堆致命性问题(可以随便编,反正也没人懂这个项目了),然后要求做一个新项目,不做二次开发。问题可以往安全性上靠,国企现在很在意这个。当然能不能撑得住,会不会背锅要你自己评估
|
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 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 吗?
你了解业务了吗? 你熟悉代码基础语法了吗? 你会搜索吗? 如果以上回答是,你可以自己慢慢看代码了, 如果回答否,那么是不可能看懂的。 |