全球课程中的本地课程

2020-09-09 14:02发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我一直在审查ABAP官方编程指南(SAP出版社),并针对全球课程中的本地课程提出了意见。 关键是,如果全局类中只需要该类需要的功能/处理,则可以在其中创建一个本地类来处理这种唯一处理。

我的问题...创建包含的本地类而不是出于相同目的创建私有方法是否有优势(或劣势)? 在类开发的前端似乎需要更多的精力来创建一个额外的本地类来处理某些特定的处理。

Justin

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我一直在审查ABAP官方编程指南(SAP出版社),并针对全球课程中的本地课程提出了意见。 关键是,如果全局类中只需要该类需要的功能/处理,则可以在其中创建一个本地类来处理这种唯一处理。

我的问题...创建包含的本地类而不是出于相同目的创建私有方法是否有优势(或劣势)? 在类开发的前端似乎需要更多的精力来创建一个额外的本地类来处理某些特定的处理。

Justin

付费偷看设置
发送
7条回答
SAP小黑
1楼 · 2020-09-09 14:18.采纳回答

创建包含的本地类而不是出于相同目的创建私有方法是否有优势(或劣势)?

我可以分享在全局类(ABAP单元类除外)中定义局部类的经验。

要求:

我们必须增强事务以表格格式显示弹出窗口,并且用户必须选择一个条目才能继续进行处理。

解决方案:

实施了相关的BAdI,并决定将屏幕设计为ALV弹出窗口。 因此,在BAdI实施类中,我定义了一个本地类并将所有ALV处理活动委托给它。 我这样做的理由是BAdI类不负责ALV的处理,它们的"关注点"是不同的! 因此,ALV必须在不同的类中处理。

我本可以为此创建一个全局类,但是我认为BAdI和ALV弹出窗口过于紧密地联系在一起。 因此,我决定在BAdI实现类中使用本地类。

BR,

Suhas

95年老男孩
2楼-- · 2020-09-09 14:16

我们可以说:类的私有方法可以访问并成为类的朋友,但本地类方法不能在外部访问吗? 因此,如果要求严格地限制在特定的类上,我们可以在全局类中使用局部类。

xfwsx85
3楼-- · 2020-09-09 14:32

当我需要做的事情可以封装但与主类紧密链接时,我使用局部类。 如果没有紧密联系,那么我将使用全局类。

如果使用私有方法来实现相同目的而不创建另一个类,那么您就不会封装复杂性。 这可能是正确的方法,也可能不是正确的方法。 这取决于您要执行的操作。

风早神人
4楼-- · 2020-09-09 14:35

谢谢大家。 总结一下...

  1. 首先取决于主要类需要完成的工作。
  2. 当所需过程与主类紧密绑定时,维护SOC。

显然,没有"一刀切"的答案。

粗暴的香蕉
5楼-- · 2020-09-09 14:31

您好,

我要说的是,清晰地分离关注点本身始终是一个优势,即使本地实现功能的"外部"重用也是如此 还不是预期的。 IMO的主要优势在于代码的清晰性和结构,更重要的是,这样可以减少全局类本身播放/覆盖的"角色"数量(即使只是私下使用)。 这可能是一个虚幻的优势,但是如果需要外部重用,它也应该大大简化重构工作。

欢呼声

Jānis

南山jay
6楼-- · 2020-09-09 14:21

你好,贾斯汀

我个人试图遵循这样的建议,即一个对象应该承担明确的责任,并尝试避免使用多用途类。 如果私有方法适合该类的目的,那么我将创建一个私有方法。 如果新功能不能很好地适合于班级,我希望将其移至其他班级。 (有很多证据表明这不是100%的情况。)

具有单一职责的类更容易测试,例如,这是一个好处。 另一方面,拥有大量的全局类使我很难找到SE80中的关键概念。 因此,我喜欢将助手类的移动性限制为在本地类中重用。

最好的问候

克劳斯

My梦
7楼-- · 2020-09-09 14:19

嗨贾斯汀,

我喜欢Suhas回答的这个(不幸的是不寻常的)好问题。

我的回答是,本质上并没有明显的优势。 这将取决于您的用例。 另一个用例是创建一个本地异常类,如下所示:全局类中的本地异常类-窍门

但是我相信大多数时候私有方法可以解决问题。

此致

Custodio

一周热门 更多>