关于在 ABAP 调试器里查看类的静态属性的一个小技巧

举报
汪子熙 发表于 2024/03/01 19:28:19 2024/03/01
1.1k+ 0 0
【摘要】 本公众号之前介绍《Clean ABAP》这本书的时候曾经提到,书中作者的观点是,在类的实例方法和静态方法(Static)之间,优先选择前者,理由如下:静态方法并不是真正的面向对象——它们不参与类继承层次结构,更不支持在运行时根据对象的实际类型进行动态调用,故而被冠名静态。静态方法依附于类本身,而不是某个具体的类实例。静态方法将类的行为限定于某一个特定的实现,远不如实例方法灵活。实例方法可以被...

本公众号之前介绍《Clean ABAP》这本书的时候曾经提到,书中作者的观点是,在类的实例方法和静态方法(Static)之间,优先选择前者,理由如下:

  • 静态方法并不是真正的面向对象——它们不参与类继承层次结构,更不支持在运行时根据对象的实际类型进行动态调用,故而被冠名静态。静态方法依附于类本身,而不是某个具体的类实例。

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

总之,实例方法更有利于书写 Clean ABAP Code,我们开发时应该把实例方法作为默认的选择。

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

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

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

同类的静态方法一样,类的静态成员属性,也从属于类本身,而不是具体的类实例。

正因为类的静态成员属性依附于类的这种特性,我们在 ABAP 调试器里查看类的静态属性要稍稍麻烦一些,比如图2,我们想查看类 ZCL_STATIC_TEST 的某个静态成员属性的内容,则需要使用 "类名=>静态成员变量名"的命名规范,如图 2 绿色高亮区域所示。如果调试的时候,要查看的静态成员属性比较多,那么一个个手敲比较麻烦。

企图在上图的 ABAP 调试器 Variable 列,输入类的名称,然后双击查看这个类的明细,这是行不通的。显然,Variable 这一列只能输入 ABAP 变量的名称,输入类的名称无效。

此时我们可以在 Variable 列输入{C:类的名称}, 回车。对于本例而言,输入 {C:ZCL_STATIC_TEST} 然后回车,此时发现 Variable 列里显示 CLASS,如图 3 黄色区域所示。

双击,就能在新的窗口里,查看这个类的所有属性,包括静态成员属性的内容。这下节省了很多次敲击键盘的时间。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。