最近在前端项目里讨论 Angular 构建性能时,Tree Shaking 经常会和 Lazy Loading、Code Splitting、Dead Code Elimination 一起出现。把这个概念带回 SAP 世界,一个很自然的问题就是,ABAP 里有没有类似 Angular Tree Shaking 的技术。答案可以先放在这里。ABAP 没有 Angular 意义上的 Tree Shaking,也没有一个 ABAP 编译器选项能够在部署之前分析整个应用的依赖图,再自动把没有被引用的类、方法、函数或者程序从发布产物里裁掉。但如果把问题从「有没有一个名字也叫 Tree Shaking 的功能」调整为「ABAP 如何避免无效代码进入运行路径,以及如何识别和清理长期不用的代码」,情况就很有意思了。ABAP 其实存在好几套机制,它们分别发生在编译、Repository 管理、Package 依赖、运行时加载、静态检查、生产使用分析和 Custom Code 生命周期治理这些阶段。Angular Tree Shaking 更接近一次发生在构建期的自动代码裁剪,而 ABAP 更倾向于把同一个问题拆散到整个软件生命周期里处理。Angular 官方当前对ng build的说明很明确,启用构建优化以后,Angular 会执行包括 Tree Shaking、Dead Code Elimination、脚本和样式压缩等优化。Angular 的依赖注入体系也专门考虑 Tree Shaking,例如通过合适的providedIn方式声明 Service,可以让没有被应用实际使用的 Service 被优化