Jerry进入SAP成都研究院前,一直是用C/C++开发,因此刚接触ABAP,对于她在某些语法环境下大小写敏感,某些环境下不敏感的特性很不适应。那时候Jerry深深地怀念以前在C/C++编程时遵循的驼峰命名法和匈牙利命名法。编程
匈牙利命名法: 变量名= 类型 + 描述。类型通常以一个或多个小写字母开头做为前缀,后面跟着一个或多个单词描述该变量的用途。函数
Jerry上大学的时候,用的C/C++教程里的示例代码所有采起的匈牙利命令法。测试
这两种命名方式各有优缺点,网上有不少文章阐述,你们感兴趣的话自行查阅。3d
那么ABAP呢?在Jerry的文章 SAP官方发布的ABAP编程规范 里可以发现,ABAP的变量命名采起的是一种综合了匈牙利命名法和下划线命名法的混合方式。有的时候,这种命名方式会给ABAP开发人员带来一些烦恼。看一个实际的例子,来自2017年Jerry还在SAP成都研究院CRM开发团队工做时,你们讨论的一个变量命名的问题。code
假设有这样一段简单的ABAP代码,经过OPEN SQL从名为I_Product的CDS view里读取数据到内表lt_table里。cdn
ABAP变量名是大小写无关的,下图红色下划线lt_table是一个“匈牙利命名法+下划线命名法”的例子,lt是local table的缩写, 说明这个变量是一个局部内表变量。blog
一般状况下咱们指望ABAP里的变量名都统一用小写,为此只需在SAP GUI的ABAP Editor设置里,打开Pretty Printer配置页面,将Keyword Uppercase的勾打上。教程
这样咱们在使用IDE里提供的Pretty Printer,即代码美化功能时,即便ABAP变量里出现了大小写混杂的状况,也会所有自动转换为小写。开发
然而Pretty Printer的这种行为会带来一个小问题,若是代码里访问了某个CDS view,好比例子中的I_Product,由于它不是一个ABAP关键字,因此也会被转换成所有是小写字母的组合:i_product.get
当时咱们对这个行为有些不满意,由于按照咱们内部开发规范,CDS view的首字母和下划线以后的第一个字母必须大写。咱们指望的结果是,当Pretty Printer执行后,代码中CDS view的名称仍然是I_Product, 而不是如今的i_product.
后来Jerry想了个办法,即修改Pretty Printer的处理逻辑:若是扫描到代码里出现的单词表明一个CDS view时,让Pretty Printer高抬贵手,不对这个单词进行任何操做。
我把这个方法分享到了SAP社区上:
Bypass CDS view name case conversion in ABAP source code pretty printer
测试结果:红色下划线标注的ABAP变量名被自动格式化成所有小写,而CDS view的名称I_Product仍然保持不变。这正是咱们指望的结果。
两年过去了。现在,这个问题已经有了优雅的解决方案:若是想使用驼峰命名法,只须要在ABAP Development Tool里把Keep Camel Case Identifiers前面的勾选上便可。
你们能够比较一下这个勾若是不打上会是什么样的效果:
这意味着偏心驼峰命名法的ABAP开发人员,现在也能够在IDE的支持下进行ABAP代码编写了。
SAP社区上有ABAP开发人员声称,这是他们盼望了好久的功能:
注意:目前这个功能只在S/4HANA和SAP云平台ABAP编程环境可用。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":