头图

Jerry 之前的文章 SAP 官方 ABAP 编程规范(2023 版)发布之后,有朋友问我在哪里能买到文章图中这几本书。

这些书的电子版和纸质本,都可以到 SAP Press 官网购买。

笔者打算用一个系列,简单聊聊这些书。

本文先从 Clean ABAP 这本书说起。

Clean ABAP 原版有德文和英文两种,分别如上图红色和蓝色所示。

在 SAP Press 官网可以购买,电子版 74.99 美元,纸质版的略贵一些,79.95 美元,2021 年出版,351 页。

书名已经高度概括了其内容:

  • 学习如何编写可读、可维护的 ABAP 代码
  • 改进 ABAP 开发人员使用类、接口、方法、变量、表的方式
  • 掌握如何选择有用的名称、编写清晰的注释,以及正确格式化代码

SAP Press 提供了这本书的试读版,总共 32 页,大概占全书 9%,大家可以通过这个链接下载。

试读版的版权也归作者和出版社所有。

在购买之前,大家可以浏览一下试读版,看自己是否喜欢本书的行文风格。

试读版从全书第四章 Methods 开始。这章着重讨论 ABAP 类方法设计,方法主体和 ABAP 程序控制流。方法是 ABAP 对象中可执行代码的最终容器。虽然也存在直接包含 ABAP 代码的其他 ABAP 程序实体,比如 Function Module,ABAP 报表和 Subroutine,但是本书的观点认为,唯有 ABAP 类的方法,才是进行 Clean ABAP 编码的首选代码构建块。

4.1 小节首先介绍了 ABAP 静态方法和实例方法的区别。

静态方法是使用 CLASS-METHODS 关键字声明的方法,并且附加到类本身,而不是附加到类的实例上。 要调用静态方法,可以直接使用类名称,而不需要创建该类的实例。 这意味着,静态方法并不是真正的面向对象——它们不参与类继承层次结构,更不支持在运行时根据对象的实际类型进行动态调用,故而被冠名"静态"。

接下来的这两页,旗帜鲜明地表述了作者的观点:在静态方法和实例方法二者之间,后者更有利于书写 Clean ABAP Code,我们开发时应该把实例方法作为默认的选择。

理由是静态方法将类的行为限定于某一个特定的实现,远不如实例方法灵活。实例方法可以被重定义,在单元测试中也可以更容易地被 mock.

当然,静态方法也有其应用场合,就是 Static Creation 和 Utility Method.

Static Creation 可以看做一种特殊的构造函数,返回一个指定业务场景的对象实例。比如 SAP BOPF 框架里常用的 create_as_copy 方法,和设计模式里最常见的单例模式的 get_instance 方法,都是典型的 Static Creation 的例子。

Utility(工具) Method 内执行的逻辑不依赖于任何底层资源,并且这些逻辑通常不会预期发生变化,并且不需要任何参数化行为。书中举的把温度值从华氏度转换成摄氏度的 fahrenheit_to_celsius 方法,就是一个典型的工具方法,可以用静态方法来实现。

这一页提到了一个原则:公有实例方法总是应当成为接口的一部分。接口定义抽象行为,类的实例方法则是类所实现接口声明中抽象行为的具体实现。遵循这种原则,业务逻辑的消费者就不会依赖于具体的类,而是依赖于更加稳定的接口。

这是实现 SOLID 原则中的 D - Dependency Inversion Principle(依赖倒置原则)的重要前提。

接下来的内容,是对前一章引入的一个不那么 Clean 的具体例子,从实战中介绍如何重构:

本书的六位作者如下,我比较八卦地去公司内网 Portal 搜索了一下,其中有三位都是 SAP 德国 Walldorf 总部资深的架构师,有一位身兼开发人员,Trainer 和产品经理三职。

本系列下一篇文章,会介绍 Clean SAPUI5,敬请期待:


注销
1k 声望1.6k 粉丝

invalid