程序员吐槽:我永远不会再为 Oracle 工作了!

近日,某网友在 Hacker News 上发起了一个 “你见过的最糟糕的代码是什么?” 的问题,引起了广泛关注和讨论,评论数已接近600条。
在这里插入图片描述
其中,一位 ID 为“oraguy”的程序员对 Oracle 数据库代码的吐槽,更是引发热议。内容大意如下:

Oracle 数据库 12.2,它有近 2500 万行 C 代码。

这有多恐怖,简直难以想象!你无法在不破坏成千上万个现有测试的情况下更改产品中的单行代码。好几代程序员在有限的项目期限内编写了这些代码,其中充斥着大量的垃圾代码。

非常复杂的逻辑、内存管理、上下文切换等,这些都用数千个 flag 连接起来。整个代码充斥着神秘的宏命令,如果不拿出笔记本,并且手动去展开相关的宏命令,就无法理清楚这些命令。甚至可能需要一两天才能真正理解某个宏命令的作用。

有时你需要理顺 20 个不同 flag 的值和效果来预测代码在不同情况下的行为方式,有时多达数百个 flag !这一点也不夸张。

这个产品仍然存活并且仍然可用的唯一原因是数百万次的测试!

以下是 Oracle 数据库开发人员的日常:

  1. 开始处理一个新的 bug 。

  2. 花两周的时间试图理解 20 个不同的 flag ,这些 flag 以神秘的方式相互交互,导致这个困境。

  3. 再添加一个 flag 来处理新的特殊场景。添加几行代码来检查此 flag ,并解决有问题的情况,规避该 bug 。

  4. 将更改提交到包含大约100-200台服务器的测试服务器集群,这些服务器将编译代码,构建新的 Oracle 数据库,并以分布式方式运行数百万个测试。

  5. 回家。第二天来上班,继续处理别的 bug,测试可能需要20-30个小时才能完成。

  6. 再回家,再来上班,检查你的集群测试结果。顺利的话,会有大约100个失败的测试;倒霉的话,将有大约1000个失败的测试。随机选择一些测试并试图搞清楚你的假设出了什么问题,或许还需要考虑10多个 flag 才能真正理解 bug 的本质。

  7. 再添加一些 flag 以尝试解决问题,再次提交更改以进行测试,再等20-30个小时。

  8. 来来回回重复两周,直到你得到了将这些 flag 组合起来的“神秘咒语”。

  9. 终有一天,你会成功,不再出现测试失败。

  10. 为你的新更改添加100多个测试,以确保下一个不幸接触这段新代码的开发人员永远不会破坏你的修复。

  11. 提交最后一轮测试的成果,然后提交以供审核。审查本身可能还需要2周到2个月,所以现在继续去处理下一个 bug 。

  12. 在2周到2个月之后,一切已就绪,代码将最终合并到主分支中。

以上就是对在 Oracle 修复 bug 的程序员日常生活的描述,一点也不夸张。现在想象一下开发新功能会有多么恐怖。开发一个小功能需要6个月到1年的时间(如果是添加一种新的身份验证模式,比如支持 AD 身份验证,可能需要2年)。

这款产品本身就是一个奇迹!

然而长时间的增删改查是没有长进的,你需要一个系统的学习方向和学习交流的圈子,为此,针对当前互联网公司的技术需求以及结合主流技术,我整理了一份系统的架构技术体系,大家可以进群Java资源分享群:(854601507)下载资料,群里有阿里大牛,也有一线互联网的资深HR,或关注微信公众号:Java资讯库,免费领取架构资料。

我不再为 Oracle 工作了,永远不会再为 Oracle 工作了!

原文出处:https://www.jianshu.com/p/298c0642a20e

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值