为什么ABAP开发者需要使用面向对象技术?
ABAP对面向对象的支持已有十多年的历史,然而在生产实践中,我们对这门技术的应用十分有限。
一方面,面向过程的惯性长期存在着;另一方面,对于大部分二次开发工作而言,似乎并没有足够的理由促使开发者使用面向对象技术。二者结合的结果,就是目前大部分ABAP开发者还在只写面向过程的代码。
我不认为面向对象是可以解决开发中各种问题的“银弹”,但是它毕竟是一项经过了考验的技术。在2017年的现在,多数人已经承认面向对象给我们带来了相当的好处。面向对象的三个基本特性、五个基本原则已经成为路人皆知的事情。关于它的通常的好处,本文不打算再复述,毕竟相关的文章讨论已经太多。
此外,对于ABAP开发而言,它还有一些额外的好处。在下文,我会分别介绍它们。
本文链接:http://www.cnblogs.com/hhelibeb/p/7641965.html
转载请注明
1, 避免过时语法
我们知道,在abap的声明语法中,type是直接声明类型,like是参考声明类型。很多新手在入门时会被like与type的区别弄晕,甚至为了不出错,完全使用like代替type。而abap是支持为变量起一个和类型名相同的变量名的,如果程序存在着和类型名相同的变量名,开发者又不懂得like和type的区别的话,代码中难免会出错。类似的“小知识”给开发者带来了不小的负担。虽然这种特性已经在文档中标记为obsolete,但是,出于兼容性之类的考虑,SAP依然允许它们的使用。
然而在OO语境中,语法检查器会对过时语法报错,这使得开发者可以安心抛开某些ABAP中存在的历史包袱,不需要再勉强自己记住那些无谓的规则。
此外,SAP也为面向对象编程提供了额外的工具,比如单元测试类生成。如果还是使用form的话,就只能手写单元测试类了。

2, 理解标准程序
相对于客户自定义开发的内容,SAP系统中已有的程序被我们称为标准程序。SAP已经在系统标准程序中大量使用了面向对象技术,在某些产品和模块中(比如CRM),可以说面向对象成为了主流。
ABAP的开发工作是基于SAP系统的,对标准程序的阅读理解、调试、修改(增强)是ABAP程序员工作的重要内容。如果开发者没有一定的面向对象编程经验的话,就很难对这些大量使用了面向对象技术的程序进行增强开发,也难以对它们进行跟踪与调试,从而给工作带来困难。
在自己编写面向对象程序的过程中,我们可以逐渐理解集成、多态等概念,熟悉与面向对象相关相关的语法,借此提高自己对标准代码的理解能力。
3, 从另一个角度自省
随着工作的进行和个人掌握的知识的变化,我们会对同一段功能产生新的看法,从而用新的代码来进行表达,因此很多人有重构甚至重写代码的习惯。不过人的耐心总是有限的,重构几次,感觉自己的代码已经“差不多了”,已经可复用、便于扩展,甚至已经“接近完美”,无需再改。这是难以避免的事情,因为,人的大脑有忽略熟悉的事物的倾向,同样的男/女朋友,看久了,便会忽略他们的美丑。如何促进自己进一步自省?使用新技术可能是一个办法。
在尝试把代码转换为面向对象的过程中,新技术的使用会促使我们从另一个角度看待曾经过于熟悉以至于被忽略的代码,激发大脑进一步运作,从而得到新的看法和启发。原本已经固定的代码,又可以再次重构了。当然,这种改变不一定总是好的。面向对象的一个引起争议的地方,就是它导致很多程序员、特别是中等水平的程序员,会不自觉地倾向于“过度设计”,无必要地为增加程序的复杂度。但对于个人而言,相比收益,这一点代价还是可以接受的,毕竟,没有犯错,又何来进步呢?
总结
在SAP的世界里,面向对象技术已经有着不亚于面向过程的地位,并且还在稳步地提升中。本文无意鼓吹其中的一者替代另一个,但是,对ABAP程序员而言,了解和运用面向对象技术的能力已经变得十分必要。最后,引用一句名言作为结束:最好的生物不是最强的也不是最聪明的,而是最适应变化的。
为什么ABAP开发者需要使用面向对象技术?的更多相关文章
- 这不是我想要的ABAP开发者
原文在此: These Aren’t the Developers You’re Looking for 在吃饼干的过程中偶然看到这篇文章,立刻被UC化的标题吸引到了. 全文读完,感觉作者还是有点刻薄 ...
- 使用面向对象技术创建高级 Web 应用程序
作者: 出处: 使用面向对象技术创建高级 Web 应用程序 来源:开源中国社区 作者:oschina 最近,我面试了一位具有5年Web应用开发经验的软件开发人员.她有4年半的JavaScript编程经 ...
- 让ABAP开发者愈加轻松的若干快捷键
引言 ABAP是一种和当代编程语言在许多方面有着相当不同的编程语言.ABAP的某些方面可能会让我们奇怪,为什么它会如此复杂?而它的某些方面又是那么杰出,给予了ABAP开发者们比其它任何语言更多的便利. ...
- 让ABAP开发者更加轻松的若干快捷键
引言 ABAP是一种和当代编程语言在许多方面有着相当不同的编程语言.ABAP的某些方面可能会让我们奇怪,为什么它会如此复杂?而它的某些方面又是那么杰出,给予了ABAP开发者们比其它任何语言更多的便利. ...
- Windows环境下多线程编程原理与应用读书笔记(2)————面向对象技术
面向对象技术是学C++需要重点掌握的知识,因为我觉得自己的基础还是比较可以,这一章节的内容就只是粗略的读了一遍,在此就不做过多的笔记.
- Java面向对象技术
问题及答案来源自<Java程序员面试笔试宝典>第四章 Java基础知识 4.2面向对象技术 1.面向对象与面向过程有什么区别? 看下面一个实例即可: 面向过程就是分析出解决问题所需要的步骤 ...
- 【UML】概述以及面向对象技术总结
导读:结束了软工文档后,就开始了UML的学习,不管学习什么,都要先从整体上去把握,然后再从细节上去分析理解.在视频的开头,就对UML进行了概述.然后接着讲了面向对象技术,用例图,类图和包图等.看着软工 ...
- 【ABAP系列】SAP DOI技术中I_OI_SPREADSHEET接口的使用
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP DOI技术中I_OI_S ...
- 2018安卓巴士开发者大会打造Android技术盛宴
2018安卓巴士开发者大会打造Android技术盛宴2018安卓巴士开发者大会将于8月25日在上海举行,作为中国最具前沿性.专业性的安卓技术会议,将邀请来自爱奇艺.阿里.饿了么等知名企业的一线工程师分 ...
随机推荐
- NSA武器库知识整理
美国国家安全局(NSA)旗下的"方程式黑客组织"(shadow brokers)使用的部分网络武器被公开,其中包括可以远程攻破全球约70%Windows机器的漏洞利用工具. 其中, ...
- Google推出移动网页开发者认证考试 价格99美元
如果您是移动网页开发人员,希望了解您的编码实力,Google将推出一个认证流程,让您可以参加考试,如果您通过,可以在您的简历,网站和其他在线上显示电子徽章配置文件. 此外,潜在的雇 ...
- R0~R16寄存器作用(转)
R0-R3 用作传入函数参数,传出函数返回值.在子程序调用之间,可以将 r0-r3 用于任何用途. 被调用函数在返回之前不必恢复 r0-r3.如果调用函数需要再次使用 r0-r3 的内容,则它 ...
- 学习笔记GAN004:DCGAN main.py
Scipy 高端科学计算:http://blog.chinaunix.net/uid-21633169-id-4437868.html import os #引用操作系统函数文件 import sci ...
- maven 自我学习笔记
1.常用网站: maven.apache.org http://mvnrepository.com/ 2.命令 mvn -v 查看maven的版本 mvn -compile 在项目的根目录下编译项 ...
- poj 3013 SPFA
首先看题看的很懵.. 然后这题直接没想用Djstra做 TLE了.看discuss,Dijstra要用堆优化,也可以用SPFA做. 这里在网上找了这两种做法的区别,点多稠密图用Dij,以为它是操作点的 ...
- linux下文件和目录
(1)普通文件(regular file):这是最常用的文件类型,这种文件包含了某种形式的数据,文件内容的解释由处理该文件的应用程序进行. (2)目录文件(directory file):这种文件包含 ...
- UTF-8编码规则【转】
hz_chenwenbiao UTF-8编码规则(转) UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
- 201521123084 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. (1)Java中把不同类型的输入.输出抽象为流(Stream),而其中输入.输出的数据则称为数据流(Data ...