重构祖传代码就跟迁祖坟一样,稍有不慎就万劫不复!


为什么祖传代码被称为屎山?

曹彦

说到祖传代码不得不提当年在移动的一段经历。

我刚入职第一天,旁边的妹纸告诉我,你是今年第五个负责这个模块的,心里凉了半截,这TMD才七月份啊,听她说最长的干了两个月。

我就不信那个邪,页面交互一般,后端不也就增删改查?能难到哪里去。看了代码才知道,too young,too simple。里面最老的代码是09年那会的,直到现在一直在维护,今刚好十周年庆典,我光荣接盘,这大概就是代码届的接盘侠吧,现在用的还是jdk1.6,不分什么前端后端,页面都是用Java写的,最坑的是里面的js,有四五个公用的js文件,大概几万行代码,注释掉的代码占三分之二,大概是我这么多年见过最多的注释了,是谁说注释多的代码质量高的?出来,我不打死他。

说来也怪,两个月了还没给我安排需求,就是来的那个礼拜说了句让我看代码,每天早上一杯咖啡,页面点一点,心情好就看看代码,日子过得很是惬意,这大概就是程序的春天吧!真不知道前面那四个哥们放着这大好的日子不过,咋跑了呢?

一天中午,项目经理喊我,问我代码看得怎么样了?从项目架构说到业务逻辑,其实有个屁的架构,随便扯了五六分钟,项目经理笑了笑,点了点头,很是满意的样子。

“小李,这有有个bug,你去修一下“

“嗯嗯,没问题“意料之中,毕竟也快两个月了。

“下个月初,你争取弄完哈“说话的时候十七八号的样子。

“没问题。“

开始写代码了,带着一丝激动,毕竟两个多月没操练了,也带着一丝胆怯,因为是个人都能看出来这是是否能顺利转正的关键一战。

两个多月来,最认真的看了一天代码,我在哪里?我是谁?我在干什么?是哪个智障写的函数,十几个行参,变量命名汉语拼音占了一大半,我严重怀疑这是小学生写的代码,还智障一样的不分前后鼻音,小学语文老师怕是后勤老师教的(真不是看不起后勤老师),函数内部无止境的递归调用,本以为快结束了又来个回掉函数,一个函数有800多行。果然出来混还是要还的,过了两个月的春天,一下子跌进了冰窖。

这样的日子浑浑噩噩的过了七八天,招我进去的那个技术老鸟实在不忍心,过来指点我。

“小伙子,你这样看代码,估计明年春天也搞不定,你这个bug,是第三个人上线的时候写出来的,你重点看下他提交代码的部分“

一语惊醒梦中人,只能用这最白痴的办法了。

看了三天,终于找到问题所在,花了十分钟,搞定。然后技术经理核查了我两个小时代码才放心让我上线。

后面有一次和项目经理吃饭,“小李,前面四个人都跑路了,我就看好你,你知道为什么当初你刚来那两个月,我啥也没让你干?我是怕你一开始就做需求,扛不住跑路。”

“经理,那代码那么老了,怎么不重构一下“

“上一次重构代码的项目经理已经被大老板开了“

编辑于 2019-02-17

曹彦 (作者) 回复大熊1 个月前
难道你们不知道,重构祖传代码就跟迁祖坟一样,稍有不慎就万劫不复!

douvrildouvril回复大熊1 个月前
这种代码很容易改渣的,拔一颗萝卜能带出整个菜地的根

年少有为年少有为回复大熊1 个月前
重构一时爽,全家火葬场。我们现在的项目就是重构的,拆成微服务重写。现在两套代码并行一年了,两边都在维护。到现在还有50%以上的客户在用老代码。鬼知道当年给一些客户定制化什么需求。最痛苦的是要维护两套环境[捂脸],新代码缺什么功能代码要同步过去。

废话多废话多回复年少有为1 个月前
可以了,居然迁过去50%,我们上次这么搞新系统直接被抛弃了,现在老系统不行了,直接一小块一小块的替换....

nullnull1 个月前
不重构 出不了大问题,而且出了问题也是前任的问题。现在你重构个试试,出一点问题都是你的问题

傅予嘉傅予嘉1 个月前
项目急不急决定了是不是屎山,很多习惯良好的程序员项目超急工期超短在连续熬夜的情况下也不会慢调斯理的写注释的。候屎山有时候是管理问题。另一方面,连续变化的需求有时候也是屎山的成因。

徐洋徐洋1 个月前
别提重构这词,99%的开发没这个能力,只是按照自己喜欢的方式写而已。。。下任开发继续骂娘


lee binlee bin1 个月前
哈哈哈我去年带过一段时间技术团队,我也是看了一个多月,然后提出了做一个全盘重做的方案。在讨论了一个月重构,也就是我带这个团队的第三个月,我被踢掉不带技术团队了,哈哈哈


Jim Jin

一个哥们上班时忽然怒气冲天,大声质问这TM谁写的代码,这么明显的bug都能出,还不写注释,当时项目组的码农们都心惊胆战,不敢说话,害怕把自己揪出来示众。

项目经理听到发话了:XX,你查一下SVN记录,查出来全公司通报,扣他年终奖。

这哥们:我已经在查了....

过了几分钟......

这哥们:不可能吧,这怎么可能呢?

大家都凑了过去,发现这段代码是这哥们一年前自己提交的。

为了避免过度尴尬,大家都没再提这个事情。

---------------------------------------------------

回到问题,是的,都是一堆臭屎,不做记号的话,还真分不出来是不是自己拉的。

编辑于 2019-01-09


予人玫瑰,手有余香
赞赏
1 人已赞赏

daemoneye

几年的代码也好意思叫shit山?这种东西得在微软/电信公司这种toB地方才恐怖。

我司有些代码我正好要升级gcc版本,要试试转docker踢到云上去,然而这批代码写于2000年前,那个酸爽哦。最早的部分可能写于1980年代bell实验室,第一批维护升级做需求的人早就退休了,第二批也退休了,每一行代码动起来都胆战心惊。

这会出现什么结果呢,重构花费时间极长,但是b端客户对稳定性和可升级性的需求不是普通客户能比,所以历代开发在这个坑上只能采取坑上盖板子这样的方式继续开发,坑传个10年20年,从底子上来看问题多太正常了。质量全是靠工程手段维持。框架稀里哗啦,代码风格迥异,逻辑不知道干什么,早期代码没有注释,指针到处乱来,文档有一本砖头一样厚的90年代开发指南,那感觉,嘿嘿嘿。

发布于 2019-01-09

蟲蟲
IT民工

屎山?小公司的祖传代码才可以叫做屎山。

大公司的祖传代码,那是屎海上漂浮的僵屎山。

你就在这屎海里面漂着,一旦进来了,就出不去了。

每天的工作,就是在粪泳前进。还有拉着部门的粪船前进。

各个部门的粪船每天继续产出新鲜的屎,投放到屎海里,它们不断聚集,成为新的屎山。

旧的屎山顺着洋流还相互亲热着,迸发出岩浆般热情的屎,掉落在你头上和身边。

你不得不一边拼命地游以自保、一边还想尽办法地不沾太多屎到身上。

系在你身后的是部门的大船,部门领导坐在船上,用伞和棍子推着避免撞上屎山。

偶尔有个负责的领导,还会愿意让你上上船休息。

可惜一旦你沾着太多的屎了,或者让船沾着太多的屎了,就等着被踢下船去吧。

偶尔有那心有抱负的人,尝试着改变这一切。

他们以为找到了一些仿佛可以容易对付的屎山,想着要重构,说他们看到了一条干净的出路。

但是,他们还是太年轻了。

因为,他们看到的,只是屎山的一角。

他们带着部门的船从旁边划过,却不知这就是昨日的泰坦尼克。

发布于 2019-01-09

董懂

之所以被成为屎山,因为你一碰,就会屎山爆发,那画面……不忍直视!


当你看到祖传代码时:


当你尝试改动时,只删了一行代码时,可能会发生下面这种情况

有句话,说的非常好:祖传代码就像一座很大的屎山,你见过的最大的山,每次你想修正一个bug,你的工作就是爬到屎山的正中心去!

发布于 2019-01-09

香一
资深造轮子十九年
731 人赞同了该回答
看着难受,又不能改它,只要一动,山就塌了,将自己深埋屎下,臭不可闻。

就像你有几栋楼,几百个房间,手上拿着一串没有备注的钥匙,一个一个房间试,你以为你打开了,却没想,门后还有一道门。

当你费劲心思解决了所有门,你又发现,钥匙断了。

你完全不明白为什么要这样设计,那么愚蠢,当你有了个新想法,忙碌之后,又发现自己写的更蠢。

不要试图去理解它,改变它。

这是神圣的传火,让你的下一任有点事情做。

发布于 2019-01-08
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值