小 心 任 何 二 次 接 手 的 代 码
上周接手了个项目,老板说大部分项目都不能工作,本来是以维护的价格来处理接手这一段代码的
没想到坑比我想的还多,这是其中展示通用的一部分,大部分出于保密性就不能透露了
开篇惊喜
我滴妈欸,你说这是 Python 新手练手的代码我都信了,这是家公司的代码???
Interface 乱飞
怪不得会跑路
能跑就行的逻辑
Cookie 生成逻辑
给 User 生成 Cookie 用的,不是 用 个 JWT 会要了命吗?这么写干嘛啊
而且最草的一点,Cookie 存在 MYSQL 数据库 里面
大哥,这人一多不得打穿数据库啊(
每个请求都要往数据库请求一次,妈欸
硬编码 +++++
存心不给维护啊,写硬编码写了十几处
最后
已经在重新写这一套玩意了,真的太哈人了
加钱,必须加钱
这就是传说中的防御性编程么🤣🤣🤣
接手价至少得是重写的 2 ~ 3 倍起跳😂
main1 main2 main3🤣
什么项目
一个软件的解析项目,爬虫系
倒很正常,就是新手写的
但这已经是商业项目,要赚钱的(
一般吧
你是没见过真烂的 python 代码,这些例子都算是上上等的模范代码了。那些代码可怕的程度超乎想象。每个接口的处理都是复制粘贴的一路到底,没有函数的概念。所有的变量基本都是全局的,包括类里面的也是到处直接读写。业务里用的所有内容都放一张表里,字段多的全用拼音首字母加数字,表的索引几十个。到处共享数据还丝毫没有锁的概念。
session 存 db 是正常操作,每次访问更新 session 的过期时间也是正常操作。你可以看看 spring session 的分布式 session 。不会 Python ,但是这种代码在 Java 里面应该还算正常。
挺简洁的,至少一眼就能看明白。不差了
我以为啥呢,基操。 年纪大了之后,现在再看这种程度的代码已经毫无波澜了。
唯一的问题也就就是 check_expire_time 好像是扫表吧,
fastapi+sqlmodel 挺前卫的啊
“#写一个接口,当这个接口接收到请求后 ...”很明显的面向 AI 编程,写个注释让 AI 帮忙写逻辑🤣
正常,商业代码这种情况多的很,能 RUN 就行(程序员或者代码)
萌新确实不建议摸二手代码,会崩世界观的。。。这可读性。。。看着挺好的,只有那个遍历 user 的方法即使看着注释也很迷惑。。。业务写多了手上没屎才是奇怪事,老板要能把维护项目谈成重写项目那属实是老板的能力可嘉,不过不一定会给你第二次机会。。。看 op 效率(加班情况)怎么样了。。。
这代码还成吧,这才哪到哪。除了代码结构问题,其他关于实现的吐槽都需要有实际瓶颈才有得说,现在这样未必不行,反到 op 有点偏执了。
你的代码还不够变态
应该没人接帮人改 bug 的活吧,重新做一套都比这省时省力,二开也是保证接手的代码能运行,然后尽量不动原来的代码。
这才到哪,我接手的前端项目,那煞笔二次封装 element-ui 连双向绑定都没有。全部参数和随机密码一样。到处是 arr1 ,arr2 互相循环修改数组,然后得出 obj1 ,obj2 。但文件组件 5000 行起。😭
见过更恶心的
cookie 和 token 有本质区别,token 也不是只有 jwt 。过期时间通过 get 扫表确实是问题,应该后台定时任务。见过几十层 if 的吗?缩进都换屏了。
不正常,如果是 jwt 存 redis 如果是 session 序列化文件和 db 有什么关系
点了,水平不够又喜欢二次封装,用起来头都大了。
这代码质量还算不错了,比我接手过的大部分代码强 10 倍。Cookie 存 DB 也是正常操作,小公司也不会有性能瓶颈,DB 打不死的。硬编码也看什么东西,API 请求地址之类的不太会更新的东西,写死也不影响可维护性。
spring session 的代码,很多人生产也是这样用的,哪里不正常了? github.com/spring-projects/spring-session/blob/main/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/JdbcIndexedSessionRepository.java
等用户多写死了 就有活继续优化了呀
[又不是不能用,又不是不能跑]
大哥,你这系统有多少用户啊,就打穿数据库了
菜鸡我一概推荐 django ,而不是 flask 和 fastapi 这种 free form 的。其实 spring 也差不多 django 这个意思,给你框死死的,水平高低整出来的活都差不多。最怕就是 flask / fastapi 这种,新手写简直要了命
你这比我司运营了 10 几年的项目好多了,就说一点我们这项目技术栈横跨了 php ,java ,nodejs ,golang ,lambda ,每个技术栈都是在正在火的时候老板赶时髦要求加的,你就说牛不牛 b 吧
主打一个够用就好。俗称屎山代码。
存 db 正常啊,又不是人均百万并发,哈哈🤣
这注释不像是给人看的,像是给 AI 生成用的 prompt
我还见过更疯的。本来一个 DB 查询能搞定的事,硬写成 for 循环,一个个来查。关键最后发现查了还没什么用。找产品建议取消显示这个字段,注释掉 for 查询,速度一下就上去了。
其实我也想说 cookie 存数据库是基操,不是热门 toC 项目没那么容易打穿,也不用引入 redis 啥的
又不是不能用我就认识一个老板,先花钱从同行公司买一个版本代码(原版本也不咋地),招了一个全职 Java 开发做二开,工资 4000你猜 2 年之后这个代码变成什么样了?就这样,老板在业务稳定后,为了节约成本,把这 4k 的兄弟也开了,月 2000 块找了个兼职
深深赞同,最近接了个私活,一个小程序商城,后端是拿 dedecms 5.3 - 5.6 ,反正还没到 5.7 的版本 N 次开发的。那都不知道多少手了,我在里面看到了"送水"、"考试"、"广告联盟"、"商城"等 N 多的内容。前端传来的参数没有任何过滤,数据库操作类每个人一个封装一个,一个函数里可能调用了多个数据库操作类的方法,比如获取一条记录有的叫 get_one ,有的叫 getOne ,有的叫 first ,有的叫 find 。而这个公司拿着这个服务端的代码,号称完全自主开发,已经干了 14 年了。我真不知道怎么坚持下来的,就那参数不过滤,还做商城,没人干他们吗?我实在理解不了。脑袋都要大了,中途有 N 次想要退钱不干了,好在还是坚持下来了,又往屎山上拉了一泡。
本身是后端技术 想学习下前端,自己做点 UI 啥的,后端技术在怎么实现,没有能看到的东西,不能形成反馈,良性循环。 我没弄过前端,还停留在 Jquery 那个年代, React…
最近在 v 站看到好几篇绿联 nas 相关的贴子,都在说国内的厂堆硬件能做到低价高配,但是系统和软件层面一坨 shit 。我寻思国内的开发环境也不差啊,程序员的平均素质相比国外…
四年前的手机,不玩游戏,理论上性能是完全够用的,但实际使用过程中经常发生卡顿,比如安装和更新 app 时卡的不行,使用 QQ 如果多开其他程序会闪退之类的。 打算想个办法维护换…