在我的公司从4.6c升级到ECC6.0后的几个月,我们的程序员团队仍然以传统的4.7c方式编码。我很想尝试ABAP的新OO方法,但令我沮丧的是,大多数人只强调在最短的时间内完成工作。
我的问题是:
1)您组织中的人员何时开始在OO ABAP中开始编码?
2)人们是否想要以OO方式对其进行编码有什么重要原因?例如调用方法比PERFORM语句更快?
答案 0 :(得分:8)
1)您组织中的人员何时开始在OO ABAP中开始编码?
我的组织中的大多数开发人员在引入ABAP OO之前已经学习了经典的ABAP。他们大多是高级开发人员,他们不会学习正确的OOP和OOD原则。他们仍然主要使用程序性ABAP功能。 此外,我们在传统环境中工作。我们后端的基础是在4.6C的时间内建立的。很难将适当的OO设计引入遗留系统。
另一方面,程序功能仍然有效。事务数据库更新等一些功能主要用于ABAP的过程部分。您可能只知道数据库事务的更新功能模块或子例程(可以调用IN UPDATE TASK
的那些)。它们是ABAP基本组件的组成部分。人们不能否认仍然需要程序性的ABAP部分。
2)是否有任何重要原因让人们想要以OO方式对其进行编码?例如调用方法比PERFORM语句更快?
你是如何比较CALL METHOD与PERFOM的运行时间的?您是否尝试过程序RSHOWTIM /或者您是否已从ABAP工作台进行了一些性能测试?单个子例程调用与方法调用没有显着差异。但是,如果在质量测试方法中调用,则调用具有稍微好一点的性能(在微秒级)。
总的来说,我建议OOD和OOP使用与之前发布的用户相同的参数。但是你必须记住,熟悉旧ABAP世界的高级开发人员在开始编写ABAP OO之前必须先了解OO原则。 否则,您的组织将无法获得ABAP OO的利润,相反。有很多经验丰富的ABAP开发人员没有OO知识,他们被迫去编写课程。他们所做的实际上是用类来模仿程序原则(例如,一个只有静态方法的类 - 作为函数模块/子程序的替代)。
祝您ABAP OO挑战您的组织!它不是关于语言,而是关于将OO原则引入员工的想法。
答案 1 :(得分:2)
我不知道ABAP,但我也看到VB开发人员迁移到.Net平台也是如此。
程序员对旧的编程方式很满意,旧的方式仍然有效。新的编程方式需要大量投资,不仅来自公司,还来自那些不得不走出自己的舒适区域到不确定领域的人们。如果你的公司不愿意投入培训和研究时间,这个问题会变得更大,因为人们将不得不投入自己的时间,而不是每个人都愿意这样做。
正如Taurean已经表明,有令人信服的理由转向OO的做事方式。它们主要不是关于性能,而是关于系统中组件的更好解耦,使其更易于维护。
但根据我的经验,很难用相应的理由说服人们走出他们的舒适区。它通常更好地向他们展示方式。慢慢开始在您自己的代码中使用OO构造,向人们展示它看起来多么干净。这不是几个月你会达到的,可能需要数年才能让人们以不同的方式思考和工作。
答案 2 :(得分:2)
一个经验丰富的程序开发人员团队不太可能很快开始以OO风格开发,除非为培训和指导他们做出了重大(且代价高昂)的努力。
有很多原因:
因此,他们的新代码很可能是程序性的,但在类和方法中。他们不会对OO的优势印象深刻。
答案 3 :(得分:2)
切换到ABAP OO的一些好理由是:
将此添加到Taurean列出的权益中:
开始使用ABAP OO:
CL_ABAP*
或CL_GUI_FRONTEND*
类资源:
答案 4 :(得分:2)
问题在于OO和不在哪里。
只要您处于客户名称空间,就可以充分利用OO方法(OOD和OOP)的所有优势。但是,每次访问SAP标准功能都会产生巨大的麻烦。 事务完整性,对象一致性和同步,数据库提交,屏幕(模块池和选择屏幕),权限检查,批量输入。这些只是在OO方法中难以(甚至不可能)集成的一些对象。 SAP标准模块的集成使其更加复杂。
用户退出,事件: 大多数数据都是在界面中提供的。可以将对客户特定数据或自定义的访问放在对象中。
报告:大多数数据将由标准FM读取。特定数据处理可以放在对象中。可以在其他报告中轻松重用。 SAP享受控件可以用对象shell包装,以便于使用和重用。屏幕不能在物体中。 : - (((
核心处理:SAP不鼓励更换SAP业务对象维护或SAP流程。但如果这是患者的病例并准备好付出巨大努力。让我们看得更近。有许多技术挑战:单例模式,数据库访问优化,锁定,同步等。应该解决技术和业务功能的分离问题。 Objets不适合大规模处理(高DB负载),因此应该进行大规模处理。
答案 5 :(得分:1)
以下是您必须知道的OOP的一些优点:
利用这些,尽可能“使用OO ABAP”有许多重要原因。即使您不想使用OO编程,使用ABAP对象仍然是一个好主意,因为它提供了程序编程所没有的一些功能。
所以这是ABAP Objects为您提供的程序ABAP:
程序性ABAP只有两个目的:
详细研究它们here,您将看到您不需要任何重要的操作/示范理由来说服自己转向OO ABAP,因为所有这些原因已经非常重要。
答案 6 :(得分:1)
简单来说,当你有一个相对年轻的团队渴望并准备好学习新的编程范例时,请使用它。在一个资深主导的团队中,收养OO可能具有挑战性。更是如此,因为该程序的可维护性下降。组织可能需要新员工来维护OO代码。
从设计的角度来看,毫无疑问(正如很多人在这个论坛上所说的那样)它是最好的,并且自古以来就一直在使用。 SAP在技术方面落后了。他们的ECC DB设计仍然是2-NF。标准的3-NF就是他们所谓的'3D'数据库。 没有偏离主题太多,我相信你现在有太多好的答案来做出决定。