真正邪恶的,不是老旧,而是没法验证的 ABAP 代码

张开发
2026/4/17 10:03:29 15 分钟阅读

分享文章

真正邪恶的,不是老旧,而是没法验证的 ABAP 代码
我们每天真正害怕的,其实不是旧程序我最近越来越强烈地感觉到,很多团队嘴上最怕的是老系统、老代码、老报表,真正让人睡不着的,其实是另一件事。不是程序旧,而是改完之后没有任何把握,不知道自己到底把系统修好了,还是只是把问题从 A 位置挪到了 B 位置。这类场景在 SAP 世界里太常见了。一个跑了十几年、二十几年的报表,前面挂着SELECTION-SCREEN,后面接着一大坨START-OF-SELECTION,中间塞满全局变量、FORM例程、数据库访问、界面处理、外部接口调用、SUBMIT、EXPORT TO DATABASE、IMPORT FROM DATABASE,再配上一些神秘莫测的常量、看不懂的例程名,以及一大片被注释掉却始终不敢删的历史残骸。业务天天靠它活着,谁都不敢轻易动,偏偏需求和缺陷又一刻不停地往上压。很多人会把这种程序统一归类成老代码,甚至直接贴上邪恶代码的标签。但我越来越觉得,这个判断方式太表面了。程序是不是过程式写法,不是决定性因素。是不是类,甚至也不是决定性因素。真正该追问的一件事很简单,我们能不能安全地改它,改完之后能不能验证它没有把别的地方一起带崩。Michael Feathers 在《Working Effectively with Legacy Code》里给过一个非常锋利的定义,所谓 legacy code,就是没有测试的代码。他进一步强调,代码有没有测试,比它写得漂不漂亮、是不是面向对象、封装得像不像样都更关键,因为没有测试,我们几乎无法快速而且可验证地修改行为。这个判断过

更多文章