在不同类之间重用类型的推荐(现代)方法是什么?
SAP does not recommend在接口(interface)中收集常量,称其为松散声明方式:
" anti-pattern
INTERFACE /dirty/common_constants.
CONSTANTS:
warning TYPE symsgty VALUE 'W',
transitional TYPE i VALUE 1,
error TYPE symsgty VALUE 'E',
persisted TYPE i VALUE 2.
ENDINTERFACE.
这同样适用于类型吗?有哪些我不知道的缺点或优点?
我应该使用类、类型接口(interface)还是类型池?
最佳答案
正如您链接到的文档所说,您不应该为常量使用接口(interface),因为那样您是:
misleading people to the conclusion that constants collections could be "implemented".
这就是为什么他们建议将常量放入 ABSTRACT FINAL
类中。
ABSTRACT
意味着这个类本身不能被实例化(像一个接口(interface))和 FINAL
它不能被继承(不像一个接口(interface))。这清楚地向用户传达了此类仅作为静态内容的容器存在,例如 CONSTANT
、CLASS-DATA
、CLASS-METHODS
和类(class)类型
。
所以同样的论点可以用于接口(interface),接口(interface)什么都不做,只是作为类型的容器。当您为此唯一目的创建一个 INTERFACE
时,人们可能想知道他们应该如何实现该接口(interface)。因此,您可以将它们放入 CLASS
中。
IMO 仍然值得考虑的另一种选择(特别是如果您考虑在数据库表中使用这些类型中的任何一种)是使用旧的 ABAP 字典。它的发明正是为了这个目的:充当全局类型的目录。
不幸的是,它不允许您将类型组织到 namespace 中(除非您为 SAP 或 SAP 合作伙伴工作,他们能够并愿意通过官僚机构为每个产品注册一个全局唯一的 namespace )。因此,您必须确保您创建的每个类型都有一个正确的前缀,以便人们知道它属于哪个应用程序。但是字典类型名称有字符限制,因此您必须保持简短。
使用类作为每个应用程序类型的容器可以解决该问题。该类用作命名空间,因此您的类型名称不再需要是系统唯一的。
关于oop - 用于声明全局类型的类或接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62758463/