史上最著名“屎山”代码,一个if循环19.8亿次,多年竟无一人敢动...

作者: 野生技术协会小优分类: 野生技能协会 发布时间: 2023-11-22 16:03:00 浏览:293105 次

史上最著名“屎山”代码,一个if循环19.8亿次,多年竟无一人敢动...

bili_21661890:
r星傲慢是真的 但如果你让我去改这个if 我只能说对游戏没有太大影响的情况下 我肯定是不会动的 要是直接删了没问题 那皆大欢喜 要是出了问题 运气好加个班解决了 运气不好整个部门都得加班改 mod作者之所以敢动是因为他是个人 他删了出问题顶多回去再研究就行了 官方动屎山出了问题不仅被嘲笑 还影响自己的口碑 如果舆论发酵影响股价 那就不是代码的问题了

【回复】我在国内美企当码农,代码不是随便动的,虽然改完之后有测试保证问题不大,但是谁也不敢闲着没事去乱改代码,因为除了问题,小则绩效降低,大则直接丢工作了。 我们软件的加载主页配置的接口需要2秒钟,我很想改掉,改完可能就几百毫秒,我组长死活不同意。[笑哭] 就算你自己想做,组长都不肯和你一起担这个风险,因为做好了没人夸你,做差了真可能丢工作。[笑哭]
【回复】回复 @柯洁的黑色棋子 :因为可能会出现测试阶段测不出来的问题,比如说你测试了一万种场景,连顾客到酒吧里点了一杯威士忌配蛋炒饭都测试过了,本以为万无一失结果上线时有个顾客从报废的烟囱爬进酒吧刚好掉进收银台里并且拿走了所有现金[妙啊]而有可能你改掉的屎山代码里,可能有一句代码非常蠢比地在天花板上放了一个报废的招财猫,而这个招财猫刚好堵住了烟囱的洞,误打误撞封住了这个bug,以至于常年来没有玩家发现且没有给公司造成损失[doge]所以在他人视角看来以及从结果导向视角来看,就只能看到你这个部门花费了大量时间浪费了巨量工作量,把一个本来能正常运转的功能搞出了大bug并且给公司造成了难以挽回的巨大亏损[笑哭]所以,优化能够运行的屎山代码,即便成功了,也显不出你有什么功劳,万一出问题了,那就是熬夜加班吐血结果还费力不讨好甚至有可能卷铺盖走人并且成为日后程序员们劝导别人不要改屎山代码的负面故事[doge]
【回复】回复 @柯洁的黑色棋子 :你不知道失没失败,因为用户总会做出意想不到的操作,IDE可不会自己帮你指出代码错误,很多bug都是因为删掉了什么东西导致的,比如cf的数据泄露就是beta版本因为括号没写完指针一直飘,但是beta版本内存分配了1~5,指针只会跑到4不会跑出内存分配,而正式版本要优化压缩到了1~3,指针跑出去了各种数据就全泄漏
学羊叫miemiemie:
很符合软件项目的特色,原来的代码不动,继续往后添加不断添加😂,最后累积到积重难返地步,不出问题绝不会改。

【回复】不是不改,是改的代价跟重来没啥区别,甚至更难受,代码那么多人写,风格各异,代码那么的多,你想理清逻辑,都够你受得,公司不可能让你花最少半年的时间去重来,重来也会出一堆bug,不如按原来的继续叠。修改是不可能修改的,只能重开项目。
【回复】以后ai更好了,可以让ai refact,虽然目前的准确度只是让你看的更方便但已经蛮好了[doge]
【回复】改了出问题就是你的责任,不改往上加💩只要还能动就无所谓
扣分小队长:
[doge][doge][doge][doge]正在接手一个PHP的小项目,代码可能是2006年左右的,本人没有任何PHP经验,只有一点Java经验,然后看了看那个PHP代码,我发现我的工作就是在一坨上再拉一坨,让我知道了程序和人有一个能跑就行

【回复】给的钱只够读完代码再加一层if[吃瓜]
【回复】我也接了一个15年项目,也是给我干吐了,php的ci框架,环境是apache和nginx一起运行的,里面的代码就是屎山,有一块bug要改我实在看不下去直接重构了,有原来的100多行缩短到了20行,改的不多就是查数据的时候加了个sql的分组,其他的不敢改怕改了又出问题
【回复】回复 @亻尔彳亍不彳亍口阝可 :不加钱还想让我加班?不可能的[doge]
是小颜奈哦:
听说黑客后来拿了R星给的一万美元奖金

【回复】回复 @空城旧梦樾 : 花园银行是gta5里面的银行[脱单doge]
【回复】回复 @空城旧梦樾 :我嫉妒你的才华
JIn-Go:
以前玩游戏开头要等好久,结果有一次突然发现一会就加载完了,一看新闻说代码改了,当时真是绷不住了,md这么多年才改

【回复】以前进游戏看云的时候我都直接干别的,有时候甚至会睡一会[辣眼睛]加载半小时我还以为是我电脑太烂了
杰森-拉姆:
然后r星就根据这个老哥的方法把程序改了,后来加载时间就很短了,这在圈内当时还算是个大新闻,说r星懒不维护游戏,游戏维护还要靠玩家

【回复】然后r星非常感谢这名玩家 然后就把人家封号了
【回复】回复 @八尾王 :当时就事论事,他的确解决了gta5的一个大问题,r星貌似的确给了一笔钱,但问题是,你怎么知道这个问题的,那就是违规手段了
星星想吃桃:
想办法说服领导让我在屎山旁边再拉一坨[doge]

【回复】什么档次和我拉一样的屎[doge]
孟想工作室:
人家说的是,游戏加载时需要加载一个大约10m的json数据,而用if语句去匹配每一天数据,相当于去遍历这10m的数据一条一条做if,但是黑客说可以使用哈西map,直接用key去匹配,这就是一个快速访问和快速插入删除的区别了,R星刚开始可能没想道数据有那么多,所以用了“数组”去储存数据,但数据庞大之后这个数组就变的庞大起来,json确实有key值可以让数据像map一样存储起来,那样需要访问某个数据的时候就可以直接通过key去快速查找到,而不是遍历数据去做if判断。高傲的不是R星,是那个黑客,你要知道在程序开发的过程中有很多问题是考虑不到的,这不叫屎山,这只是代码优化的问题,真正的屎山是什么,是明明可以用一个循环去执行的,非要写一大片重复的代码,明明需要重复使用的变量,就不写在类里面非要每次从新创建一个。

水水的金小乖:
大型项目就是如此。 包括后续r星采纳了这个办法。 这时候r星做了,成了最好,也就是被玩家诟病下懒。 不成也没事,锅都甩给mod作者,你看,我们之前不该是有原因的,现在崩了也不能全赖我们。 但如果没这个作者提出这个事儿,r星是肯定不会动的。 锅太大,没人担得起其后果。

a阿斯特拉:
就说这代码结构谁敢去动,处理好升职加薪,处理不好整出更多bug,这个成本谁来承担?对于R星内部而言就是费力不讨好,反正游戏能运行就行了

【回复】回复 @嗯__怎么不算呢 :看高层愿不愿意花这个钱来改,别看人家黑客轻轻松松就解决了这bug,事实上R星的员工光是排查就得花很长时间,然后就是修改代码、调试、测试,这个时间成本和员工成本一下就上去了。如果在不妨碍其他主要业务的同时安排少数人处理这个问题,没有硬性要求,可能半年都不一定整好
【回复】回复 @嗯__怎么不算呢 :玩家等待对于公司没有成本,公司改bug有成本
【回复】不懂就问,为什么不能先改好了再发给玩家更新,这样成本也很低的,就费几个程序员而已。如果实在改不好整出更多bug,大不了回档就是了,怕什么
笨笨5251:
毕业论文需要做大量数据的线性拟合,当初用matlab计算居然用的for循环,后来才知道有矩阵运算[doge]

【回复】[doge][doge]假如用c写就行了
程銁:
发现问题不解决问题,那就是人的问题。没有发现问题,那就没有问题。

【回复】那就解决发现问题的人[滑稽]
占据一个电饭煲的粽子:
Bug还是一个老哥自己修的,后来并入官方了[笑哭]是真的离谱

bili_299197043:
以前玩线上还得先进故事模式再切线上才能大大减少时间,[微笑]

知识分享官 C语言 程序员 C++ 科技 编程 经验分享 大学生 代码 计算机技术

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!