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开发者需要使用面向对象技术?的更多相关文章

  1. 这不是我想要的ABAP开发者

    原文在此: These Aren’t the Developers You’re Looking for 在吃饼干的过程中偶然看到这篇文章,立刻被UC化的标题吸引到了. 全文读完,感觉作者还是有点刻薄 ...

  2. 使用面向对象技术创建高级 Web 应用程序

    作者: 出处: 使用面向对象技术创建高级 Web 应用程序 来源:开源中国社区 作者:oschina 最近,我面试了一位具有5年Web应用开发经验的软件开发人员.她有4年半的JavaScript编程经 ...

  3. 让ABAP开发者愈加轻松的若干快捷键

    引言 ABAP是一种和当代编程语言在许多方面有着相当不同的编程语言.ABAP的某些方面可能会让我们奇怪,为什么它会如此复杂?而它的某些方面又是那么杰出,给予了ABAP开发者们比其它任何语言更多的便利. ...

  4. 让ABAP开发者更加轻松的若干快捷键

    引言 ABAP是一种和当代编程语言在许多方面有着相当不同的编程语言.ABAP的某些方面可能会让我们奇怪,为什么它会如此复杂?而它的某些方面又是那么杰出,给予了ABAP开发者们比其它任何语言更多的便利. ...

  5. Windows环境下多线程编程原理与应用读书笔记(2)————面向对象技术

    面向对象技术是学C++需要重点掌握的知识,因为我觉得自己的基础还是比较可以,这一章节的内容就只是粗略的读了一遍,在此就不做过多的笔记.

  6. Java面向对象技术

    问题及答案来源自<Java程序员面试笔试宝典>第四章 Java基础知识 4.2面向对象技术 1.面向对象与面向过程有什么区别? 看下面一个实例即可: 面向过程就是分析出解决问题所需要的步骤 ...

  7. 【UML】概述以及面向对象技术总结

    导读:结束了软工文档后,就开始了UML的学习,不管学习什么,都要先从整体上去把握,然后再从细节上去分析理解.在视频的开头,就对UML进行了概述.然后接着讲了面向对象技术,用例图,类图和包图等.看着软工 ...

  8. 【ABAP系列】SAP DOI技术中I_OI_SPREADSHEET接口的使用

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP DOI技术中I_OI_S ...

  9. 2018安卓巴士开发者大会打造Android技术盛宴

    2018安卓巴士开发者大会打造Android技术盛宴2018安卓巴士开发者大会将于8月25日在上海举行,作为中国最具前沿性.专业性的安卓技术会议,将邀请来自爱奇艺.阿里.饿了么等知名企业的一线工程师分 ...

随机推荐

  1. https加密实现

    author:JevonWei 版权声明:原创作品 在httpd安装完成的基础上实现https加密 安装mod_ssl软件包 yum -y install mod_ssl http -M 显示mod_ ...

  2. 线上Java程序导致服务器CPU占用率过高的问题排除过程

    博文转至:http://www.jianshu.com/p/3667157d63bb,博文更好效果看原版,转本博文的目的就算是个书签吧,需要时候可以定位原文学习 1.故障现象 客服同事反馈平台系统运行 ...

  3. Java中死锁的简单例子及其避免

    死锁:当一个线程永远地持有一个锁,并且其他线程都尝试获得这个锁时,那么它们将永远被阻塞.比如,线程1已经持有了A锁并想要获得B锁的同时,线程2持有B锁并尝试获取A锁,那么这两个线程将永远地等待下去. ...

  4. NHibernate教程(12)--延迟加载

    本节内容 引入 延迟加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过前面文章的分析,我们知道了如何使用NHibernate,比如CRUD操作.事务.一对多.多对多映射等问题,这 ...

  5. [转载] sublime text 2 调试python时结果空白

    之前用的时候都一切正常,今天突然就出现了这个问题.按ctrl+b执行的时候结果只有空白,查了很多文章都只提到了中文路径.系统路径等等,没有解决问题,直到看到了这篇文章:http://384444165 ...

  6. 201521123035《Java程序设计》第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  7. 201521123101 《Java程序设计》第9周学习总结

    1. 本周学习总结 2. 书面作业 1. 常用异常,题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 遇到ArrayI ...

  8. Eclipse: eclipse文本文件编码格式更改(GBK——UTF-8)

    Eclipse中设置编码的方式 Eclipse工 作空间(workspace)的缺省字符编码是操作系统缺省的编码,简体中文操作系统 (Windows XP.Windows 2000简体中文)的缺省编码 ...

  9. 如何实现Sublime Text3中vue文件高亮显示的最有效的方法

    今天第一次使用Sublime Text3软件,在实现vue文件高亮显示的过程中一直报错,经过了半天时间的不停尝试终于找到了最有效的一种解决方法!错误提示如下: 刚开始尝试了很多方法都不行,只要打开in ...

  10. Java-判断一个数是不是素数

    import java.util.Scanner; /** * @author 薛定谔的猫 * java判断一个数是不是素数 * * 素数又称质数,是指在一个大于1的自然数中,除了1和本身之外,不能被 ...