小 心 任 何 二 次 接 手 的 代 码

147 天前
MoeMagicMango  MoeMagicMango

上周接手了个项目,老板说大部分项目都不能工作,本来是以维护的价格来处理接手这一段代码的

没想到坑比我想的还多,这是其中展示通用的一部分,大部分出于保密性就不能透露了

开篇惊喜

image.png

我滴妈欸,你说这是 Python 新手练手的代码我都信了,这是家公司的代码???

Interface 乱飞

image.png

怪不得会跑路

能跑就行的逻辑

Cookie 生成逻辑

image.png

给 User 生成 Cookie 用的,不是 用 个 JWT 会要了命吗?这么写干嘛啊

而且最草的一点,Cookie 存在 MYSQL 数据库 里面

大哥,这人一多不得打穿数据库啊(

每个请求都要往数据库请求一次,妈欸

硬编码 +++++

存心不给维护啊,写硬编码写了十几处

最后

已经在重新写这一套玩意了,真的太哈人了

12449 次点击
所在节点    程序员
114 条回复
zerovoid
146 天前
应该没人接帮人改 bug 的活吧,重新做一套都比这省时省力,二开也是保证接手的代码能运行,然后尽量不动原来的代码。
Track13
146 天前
这才到哪,我接手的前端项目,那煞笔二次封装 element-ui 连双向绑定都没有。全部参数和随机密码一样。
到处是 arr1 ,arr2 互相循环修改数组,然后得出 obj1 ,obj2 。但文件组件 5000 行起。😭
guanhui07
146 天前
见过更恶心的
lcbp
146 天前
cookie 和 token 有本质区别,token 也不是只有 jwt 。

过期时间通过 get 扫表确实是问题,应该后台定时任务。

见过几十层 if 的吗?缩进都换屏了。
Bingchunmoli
146 天前
@zhenjiachen 不正常,如果是 jwt 存 redis 如果是 session 序列化文件和 db 有什么关系
zhtyytg
146 天前
@Track13 点了,水平不够又喜欢二次封装,用起来头都大了。
sagaxu
146 天前
这代码质量还算不错了,比我接手过的大部分代码强 10 倍。

Cookie 存 DB 也是正常操作,小公司也不会有性能瓶颈,DB 打不死的。硬编码也看什么东西,API 请求地址之类的不太会更新的东西,写死也不影响可维护性。
zhenjiachen
146 天前
0xD800
146 天前
等用户多写死了 就有活继续优化了呀
BeijingBaby
146 天前
[又不是不能用,又不是不能跑]
967182
146 天前
大哥,你这系统有多少用户啊,就打穿数据库了
dayeye2006199
146 天前
菜鸡我一概推荐 django ,而不是 flask 和 fastapi 这种 free form 的。
其实 spring 也差不多 django 这个意思,给你框死死的,水平高低整出来的活都差不多。

最怕就是 flask / fastapi 这种,新手写简直要了命
k9982874
146 天前
你这比我司运营了 10 几年的项目好多了,就说一点我们这项目技术栈横跨了 php ,java ,nodejs ,golang ,lambda ,每个技术栈都是在正在火的时候老板赶时髦要求加的,你就说牛不牛 b 吧
sn0wdr1am
146 天前
主打一个够用就好。

俗称屎山代码。
anakinsky
146 天前
存 db 正常啊,又不是人均百万并发,哈哈🤣
zydxn
146 天前
这注释不像是给人看的,像是给 AI 生成用的 prompt
wupher
146 天前
我还见过更疯的。

本来一个 DB 查询能搞定的事,硬写成 for 循环,一个个来查。

关键最后发现查了还没什么用。找产品建议取消显示这个字段,注释掉 for 查询,速度一下就上去了。
aarontian
146 天前
其实我也想说 cookie 存数据库是基操,不是热门 toC 项目没那么容易打穿,也不用引入 redis 啥的
v2orz
146 天前
又不是不能用
我就认识一个老板,先花钱从同行公司买一个版本代码(原版本也不咋地),招了一个全职 Java 开发做二开,工资 4000
你猜 2 年之后这个代码变成什么样了?

就这样,老板在业务稳定后,为了节约成本,把这 4k 的兄弟也开了,月 2000 块找了个兼职
kpsanmao
146 天前
深深赞同,最近接了个私活,一个小程序商城,后端是拿 dedecms 5.3 - 5.6 ,反正还没到 5.7 的版本 N 次开发的。

那都不知道多少手了,我在里面看到了"送水"、"考试"、"广告联盟"、"商城"等 N 多的内容。前端传来的参数没有任何过滤,数据库操作类每个人一个封装一个,一个函数里可能调用了多个数据库操作类的方法,比如获取一条记录有的叫 get_one ,有的叫 getOne ,有的叫 first ,有的叫 find 。而这个公司拿着这个服务端的代码,号称完全自主开发,已经干了 14 年了。

我真不知道怎么坚持下来的,就那参数不过滤,还做商城,没人干他们吗?我实在理解不了。脑袋都要大了,中途有 N 次想要退钱不干了,好在还是坚持下来了,又往屎山上拉了一泡。

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

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

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

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

© 2021 V2EX