体会到那种维护"屎山"的感觉了

2019-03-31 11:24:06 +08:00
 whoami9894

楼主本科生,这周接手了校宣传部一个比赛网站的开发任务,代码是好几年前祖传下来的 PHP Yii 框架开发,之后每年这个比赛都会加一些新需求,然后每年学生都得修修补补

今年新加了几个分项,发现整个库表结构都得改,加上架构逻辑看起来很分散(不知道是框架的范式还是设计的问题),某个功能变了五六个文件得连带着改,还有不知道为什么某些表单结构和路由也放在数据库....。

部署到服务器后上传图片的接口崩了,半天也没定位到 Bug,易班认证的 OAuth2 接口也崩了,(说因为要推广易班所以需要先易班认证才能在本站注册),发现整个代码很多补丁的痕迹...头大 orz

老师本来告诉我有个功能前面几届都没给她实现,我当时没看项目代码,想着不是多复杂的功能,拍胸脯我今年肯定给她搞定...现在我明白为什么前几年没有实现了

12959 次点击
所在节点    程序员
97 条回复
whoami9894
2019-03-31 23:31:10 +08:00
@metabot
和超星学习通一样,处处被诟病,几乎没人用,都是上级一厢情愿的推广
0TSH60F7J2rVkg8t
2019-03-31 23:36:08 +08:00
如果这项目给钱,而且钱够多,值得你花时间做的话,那就重写一遍;反之随便改改就完了
zjsxwc
2019-04-01 07:09:23 +08:00
我的建议是请把代码写的更烂一点,最好来个全局混淆,让后来者无法维护
loading
2019-04-01 07:27:02 +08:00
在现有数据库结构魔改,用特殊技巧使用数据库字段,似的能支持新需求,我觉得这个比重写更有挑战性。
重写其实是另一种逃避方式。
ytmsdy
2019-04-01 08:57:08 +08:00
又不给钱!重写什么啊!!
spotfg
2019-04-01 09:17:55 +08:00
我今年运气不错,换了家新公司,上来上班第一天上司就说老板要求重构代码,这个月搞定。。。现在 4 月了,搞得差不多了……所以就加班一个月
learningman
2019-04-01 09:19:01 +08:00
@whoami9894 在本地再开一个端口,用 socks 通信
是社团的项目,基本没有架构。我刚刚扫了一眼发现还有可疑的 pyc 文件
annielong
2019-04-01 09:23:11 +08:00
有时候只能魔改,新建表,把特殊配置全写进去
guoyuchuan
2019-04-01 09:28:21 +08:00
重构大法
Seney
2019-04-01 09:39:14 +08:00
@whoami9894 那你就直接说开发 1.3/1.4/1.5/。。。 学校这种一般都是编程很粗浅的同学写的,当时可能不知道什么叫工程
encro
2019-04-01 09:39:27 +08:00
@whoami9894
这个算是浅层次安全吧,语法上的,未来很多都要交给机器,
未来这样的安全岗位应该有限(人数和发展前景),
高级点的应该是架构级别的。
架构级别别说不懂开发。
解决安全问题更多是架构级别的解决。

比如架构级别防止注入,网络通信安全,防止爬虫。都需要开发基础。
reus
2019-04-01 09:50:39 +08:00
@encro 你十几年了连“重构”和“重写”都分不清,还指指点点?
mogutouer
2019-04-01 09:59:52 +08:00
所以你以为 重构 这个词是怎么来的
liuzuo
2019-04-01 10:00:05 +08:00
如果原代码能做到解藕,就按照要改的功能重写,微服务化。
如果做不到,就在原有基础上魔改吧。
cwx391497
2019-04-01 10:02:14 +08:00
代码是屎山已经不恐怖了, 恐怖的是, 测试和文档也都是屎山
gscoder
2019-04-01 10:05:35 +08:00
没必要重构,重构会发现有很多细小的功能点,到时候他们会说,之前可以这样这样现在怎么不行了,又不是要长期维护的项目,随便改改就行了
alexmy
2019-04-01 10:35:24 +08:00
我这也是 5.6, yii1,性能部分重构下,就一个人,才没有精力去重写,现在毕竟稳定,老板其实只要能用就好,并不喜欢重头开发一遍,万一开发出来的又像之前 si 一样怎么办。
no1xsyzy
2019-04-01 10:36:34 +08:00
@whoami9894 #5
简单地说:这不是 1.1,这是 1.1.0.0.α.zebra.Ⅳ.㎏.勹.г.\frac{ω5}{在吗?}
要改成 1.2 需要在不改动功能的情况下把那些东西都去掉,也就是需要做很多次换心手术。

——每一次重构都是一个未知生物的换心手术:确定边界,取代边界(写测试),替换部件,确认新部件状态良好,还原边界。
hellowmykami
2019-04-01 11:00:46 +08:00
魔改
zarte
2019-04-01 11:30:35 +08:00
有追求就重构
求稳就在现有基础上打补丁留给下一任。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/550456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX