为什么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日在上海举行,作为中国最具前沿性.专业性的安卓技术会议,将邀请来自爱奇艺.阿里.饿了么等知名企业的一线工程师分 ...
随机推荐
- python利用urllib实现的爬取京东网站商品图片的爬虫
本例程使用urlib实现的,基于python2.7版本,采用beautifulsoup进行网页分析,没有第三方库的应该安装上之后才能运行,我用的IDE是pycharm,闲话少说,直接上代码! # -* ...
- Spring AOP 通过order来指定顺序
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt398 Spring中的事务是通过aop来实现的,当我们自己写aop拦截的时候 ...
- tomcat配置单项HTTPS协议
1.进入到jdk下的bin目录 1)进入cmd窗口,cd进入目录: 2)找到JDK安装bin目录,shift+右击打开命令窗口: 3)如果配置类环境变量,在任意cmd命令窗口都可以: 2.输入 ...
- 猎八哥浅谈MYSQL触发器
什么是MYSQL触发器,我们先了解一下触发的意思.触发的字面意思是指因触动而激发起某种反应. MYSQL必知必会中对触发器的解释是:MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于 B ...
- 解决 SQL 注入的另类方法
本文是翻译,版权归原作者所有 原文地址(original source):https://bitcoinrevolt.wordpress.com/2016/03/08/solving-the-prob ...
- 团队作业8——第二次项目冲刺(Beta阶段)--第三天
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 学号 成员 贡献比 201421123001 廖婷婷 16% 201421123002 翁珊 16% 201421123004 ...
- 201521123035《Java程序设计》第一周学习总结
1.本周学习总结 本周学习了Java从诞生到如今的部分历史,并通过了老师的课堂演示了解了Java在cmd中的编译过程.然后还学习了JDK,JRE,JVM. 2. 书面作业 1.为什么java程序可以 ...
- 201521123044 《Java程序设计》第10周学习总结
1. 本章学习总结 2. 书面作业 本次PTA作业题集异常丶多线程 1.finally题目4-2 1.1 截图你的提交结果 1.2 4-2中finally中捕获异常需要注意什么? 1.无论try-ca ...
- 201521123031 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 1.将Student对象(属性:int id, String name,int age,dou ...
- 控制结构(4) 局部化(localization)
// 上一篇:状态机(state machine) // 下一篇:必经之地(using) 基于语言提供的基本控制结构,更好地组织和表达程序,需要良好的控制结构. 前情回顾 上一次,我们说到状态机结构( ...