最近,一位互联网用户提出了一个问题:“你见过的最糟糕的代码是什么?”在黑客新闻中,这引起了互联网用户的关注和讨论。评论的数量接近600.其中,ID为“oraguy”的程序员讨论了Oracle数据库代码。内容的内容如下:
Oracle数据库12.2。它有大约2500万行代码C.
这太可怕了,很难想象!在不破坏数千个现有测试的情况下,您无法更改产品中的单行代码。几代程序员已经在非常紧凑的项目期间编写了这段代码,代码中充满了各种不需要的内容。
非常复杂的逻辑,内存管理,上下文更改等,都由数千个指标连接。完整的代码充满了神秘的宏命令。如果您没有取出笔记本电脑而不手动扩展相关的宏命令,则无法理解这些命令。可能需要一两天才能真正理解宏命令的作用。
可以毫不夸张地说,有时需要纠正20个不同指标的值和效果来预测代码在不同情况下的行为。有时高达数百个旗帜!
Oracle Tucao程序员:我再也不会为Oracle工作了。
数百万次测试,这个产品仍然活着和可用的唯一原因!
以下是Oracle数据库开发人员的日常例程:
开始处理一个新的错误。
花了两个星期的时间才试图理解20种不同的横幅,这些横幅以神秘的方式相互作用。
添加另一个标志来处理新的特殊场景。添加一些代码行来验证此指标并解决问题并避免错误。
将更改发送到一组测试服务器,其中包含大约100-200台服务器,这些服务器将编译代码,构建新的Oracle数据库并以分布式方式运行数百万个测试。
回家第二天来上班,继续处理其他错误。测试可能需要20到30个小时才能完成。
再来回家吧。返回工作并验证组测试的结果。如果进展顺利,将会有大约100次失败的测试。如果你不幸运,将会有大约1000次失败的测试。随机选择一些测试,并尝试找出您的假设出了什么问题。您可能需要考虑10个以上的横幅才能真正理解错误的本质。
添加一些横幅以尝试解决问题。再次发送您的更改以尝试。等20-30个小时。重复两周,直到你得到结合这些旗帜的“神秘咒语”。
终于,有一天,你会成功,你将不再证明失败。
为您的新更改添加100多个测试,以确保不幸接触此新代码的下一个开发人员永远不会中断您的更正。
介绍最后一轮测试的结果。然后发送给他审查。审查本身可能需要2周到2个月。所以继续处理以下错误。
在2周到2个月之后,一切准备就绪,代码最终将与主分支合并。
以上是对Oracle中纠正错误的程序员的日常生活的描述,并没有夸大其词。现在想象开发新功能是多么可怕。开发一个小功能需要6个月到1年(添加新的身份验证模式可能需要2年时间,例如支持AD身份验证)。
这个产品本身就是一个奇迹!
我不再为Oracle工作了。永远不要再为Oracle工作!