CodeSOD:构建升级 笔记

CodeSOD:构建升级

SQL 查询中的字符串拼接是常见的问题来源。作者主张使用 SQL 构建器 API,而非原始 SQL 字符串。该构建器会构建一个语法树,在需要时将其渲染为 SQL,从而避免直接字符串操作带来的问题。虽然 ORM 也是一种选择,但作者认为它们属于有泄漏的抽象。团队当时使用 Java,并遵循一条规则:使用构建器,不使用 SQL 字符串。然而,他们使用 StringBuilder 进行构建,这在技术上符合“构建器”的定义。但这种 StringBuilder 方法本质上只是带有额外步骤的字符串拼接。示例代码展示了一个用于创建查询的 StringBuilder,但生成的 SQL 字符串在根本上是错误的且不完整的,无法满足其预期用途。这样一个有缺陷的代码在生产环境中运行而未立即被检测到,是一个严重的问题。这表明错误被静默忽略,或者有缺陷的输出并不关键到足以引发警报。作者将此称为"WTF"时刻,强调了缺乏健壮的错误处理或验证机制。