ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了

简介: ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了

Jerry进入SAP成都研究院前,一直是用C/C++开发,所以刚接触ABAP,对于她在某些语法环境下大小写敏感,某些环境下不敏感的特性很不适应。那时候Jerry深深地怀念之前在C/C++编程时遵循的驼峰命名法和匈牙利命名法。

网络异常,图片无法展示
|

驼峰命名法:函数名中的每一个逻辑断点都有一个大写字母来标记。方法和变量名的首字母一般小写,这叫小驼峰命名法,例如printEmployeePaychecks. 类名的首字母一般大写,这叫大驼峰命名法,比如EmployeeBonusPlanManager.

匈牙利命名法: 变量名= 类型 + 描述。类型一般以一个或多个小写字母开头作为前缀,后面跟着一个或多个单词描述该变量的用途。


Jerry上大学的时候,用的C/C++教程里的示例代码全部采取的匈牙利命令法。

image.png


这两种命名方式各有优缺点,网上有很多文章阐述,大家感兴趣的话自行查阅。


那么ABAP呢?在Jerry的文章 SAP官方发布的ABAP编程规范 里能够发现,ABAP的变量命名采取的是一种综合了匈牙利命名法和下划线命名法的混合方式。有的时候,这种命名方式会给ABAP开发人员带来一些烦恼。看一个实际的例子,来自2017年Jerry还在SAP成都研究院CRM开发团队工作时,大家讨论的一个变量命名的问题。


假设有这样一段简单的ABAP代码,通过OPEN SQL从名为I_Product的CDS view里读取数据到内表lt_table里。


ABAP变量名是大小写无关的,下图红色下划线lt_table是一个“匈牙利命名法+下划线命名法”的例子,lt是local table的缩写, 说明这个变量是一个局部内表变量。

image.png


通常情况下我们期望ABAP里的变量名都统一用小写,为此只需在SAP GUI的ABAP Editor设置里,打开Pretty Printer配置页面,将Keyword Uppercase的勾打上。

image.png


这样我们在使用IDE里提供的Pretty Printer,即代码美化功能时,即使ABAP变量里出现了大小写混杂的情况,也会全部自动转换为小写。


然而Pretty Printer的这种行为会带来一个小问题,如果代码里访问了某个CDS view,比如例子中的I_Product,因为它不是一个ABAP关键字,所以也会被转换成全部是小写字母的组合:i_product.


image.png

当时我们对这个行为有些不满意,因为按照我们内部开发规范,CDS view的首字母和下划线之后的第一个字母必须大写。我们期望的结果是,当Pretty Printer执行后,代码中CDS view的名称仍然是I_Product, 而不是现在的i_product.


后来Jerry想了个办法,即修改Pretty Printer的处理逻辑:如果扫描到代码里出现的单词代表一个CDS view时,让Pretty Printer高抬贵手,不对这个单词进行任何操作。

image.png


我把这个方法分享到了SAP社区上:


Bypass CDS view name case conversion in ABAP source code pretty printer


测试结果:红色下划线标注的ABAP变量名被自动格式化成全部小写,而CDS view的名称I_Product仍然保持不变。这正是我们期望的结果。


image.png

两年过去了。如今,这个问题已经有了优雅的解决方案:如果想使用驼峰命名法,只需要在ABAP Development Tool里把Keep Camel Case Identifiers前面的勾选上即可。

image.png


大家可以比较一下这个勾如果不打上会是什么样的效果:


image.png

这意味着偏爱驼峰命名法的ABAP开发人员,如今也可以在IDE的支持下进行ABAP代码编写了。


SAP社区上有ABAP开发人员声称,这是他们盼望了很久的功能:

image.png

注意:目前这个功能只在S/4HANA和SAP云平台ABAP编程环境可用。

相关文章
|
2月前
|
存储 Java BI
那些令人哭笑不得,看了想揍人的 ABAP 变量命名方式,强烈不推荐
那些令人哭笑不得,看了想揍人的 ABAP 变量命名方式,强烈不推荐
关于 unicode ABAP 程序的变量名不允许出现特殊字符的问题
关于 unicode ABAP 程序的变量名不允许出现特殊字符的问题
|
10月前
使用 SAP ABAP 编程语言调用 Windows10 操作系统的 Powershell 命名并打印出执行结果
使用 SAP ABAP 编程语言调用 Windows10 操作系统的 Powershell 命名并打印出执行结果
|
JavaScript 前端开发 Java
Angular里的特殊字符ɵ和ABAP变量名里的特殊字符*
Angular里的特殊字符ɵ和ABAP变量名里的特殊字符*
112 0
Angular里的特殊字符ɵ和ABAP变量名里的特殊字符*
ABAP 代码中,哪些特殊字符不能用于变量命名?
ABAP 代码中,哪些特殊字符不能用于变量命名?
82 0
ABAP 代码中,哪些特殊字符不能用于变量命名?
SAP ABAP 编程语言里允许哪些特殊字符作为变量名的一部分?
SAP ABAP 编程语言里允许哪些特殊字符作为变量名的一部分?
SAP ABAP 编程语言里允许哪些特殊字符作为变量名的一部分?
|
JavaScript 前端开发 Java
Angular里的特殊字符ɵ和ABAP变量名里的特殊字符*
Angular里的特殊字符ɵ和ABAP变量名里的特殊字符*
Angular里的特殊字符ɵ和ABAP变量名里的特殊字符*
|
SQL IDE 开发工具
ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
Jerry进入SAP成都研究院前,一直是用C/C++开发,所以刚接触ABAP,对于她在某些语法环境下大小写敏感,某些环境下不敏感的特性很不适应。那时候Jerry深深地怀念之前在C/C++编程时遵循的驼峰命名法和匈牙利命名法。
|
2月前
|
前端开发 开发工具 Android开发
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
|
2月前
|
BI
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示