ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
Jerry進(jìn)入SAP成都研究院前,一直是用C/C++開(kāi)發(fā),所以剛接觸ABAP,對(duì)于她在某些語(yǔ)法環(huán)境下大小寫(xiě)敏感,某些環(huán)境下不敏感的特性很不適應(yīng)。那時(shí)候Jerry深深地懷念之前在C/C++編程時(shí)遵循的駝峰命名法和匈牙利命名法。
駝峰命名法:函數(shù)名中的每一個(gè)邏輯斷點(diǎn)都有一個(gè)大寫(xiě)字母來(lái)標(biāo)記。方法和變量名的首字母一般小寫(xiě),這叫小駝峰命名法,例如printEmployeePaychecks. 類名的首字母一般大寫(xiě),這叫大駝峰命名法,比如EmployeeBonusPlanManager.匈牙利命名法: 變量名= 類型 + 描述。類型一般以一個(gè)或多個(gè)小寫(xiě)字母開(kāi)頭作為前綴,后面跟著一個(gè)或多個(gè)單詞描述該變量的用途。
Jerry上大學(xué)的時(shí)候,用的C/C++教程里的示例代碼全部采取的匈牙利命令法。
這兩種命名方式各有優(yōu)缺點(diǎn),網(wǎng)上有很多文章闡述,大家感興趣的話自行查閱。
那么ABAP呢?在Jerry的文章 SAP官方發(fā)布的ABAP編程規(guī)范 里能夠發(fā)現(xiàn),ABAP的變量命名采取的是一種綜合了匈牙利命名法和下劃線命名法的混合方式。有的時(shí)候,這種命名方式會(huì)給ABAP開(kāi)發(fā)人員帶來(lái)一些煩惱??匆粋€(gè)實(shí)際的例子,來(lái)自2017年Jerry還在SAP成都研究院CRM開(kāi)發(fā)團(tuán)隊(duì)工作時(shí),大家討論的一個(gè)變量命名的問(wèn)題。
假設(shè)有這樣一段簡(jiǎn)單的ABAP代碼,通過(guò)OPEN SQL從名為I_Product的CDS view里讀取數(shù)據(jù)到內(nèi)表lt_table里。
ABAP變量名是大小寫(xiě)無(wú)關(guān)的,下圖紅色下劃線lt_table是一個(gè)“匈牙利命名法+下劃線命名法”的例子,lt是local table的縮寫(xiě), 說(shuō)明這個(gè)變量是一個(gè)局部?jī)?nèi)表變量。
通常情況下我們期望ABAP里的變量名都統(tǒng)一用小寫(xiě),為此只需在SAP GUI的ABAP Editor設(shè)置里,打開(kāi)Pretty Printer配置頁(yè)面,將Keyword Uppercase的勾打上。
這樣我們?cè)谑褂肐DE里提供的Pretty Printer,即代碼美化功能時(shí),即使ABAP變量里出現(xiàn)了大小寫(xiě)混雜的情況,也會(huì)全部自動(dòng)轉(zhuǎn)換為小寫(xiě)。
然而Pretty Printer的這種行為會(huì)帶來(lái)一個(gè)小問(wèn)題,如果代碼里訪問(wèn)了某個(gè)CDS view,比如例子中的I_Product,因?yàn)樗皇且粋€(gè)ABAP關(guān)鍵字,所以也會(huì)被轉(zhuǎn)換成全部是小寫(xiě)字母的組合:i_product.
當(dāng)時(shí)我們對(duì)這個(gè)行為有些不滿意,因?yàn)榘凑瘴覀儍?nèi)部開(kāi)發(fā)規(guī)范,CDS view的首字母和下劃線之后的第一個(gè)字母必須大寫(xiě)。我們期望的結(jié)果是,當(dāng)Pretty Printer執(zhí)行后,代碼中CDS view的名稱仍然是I_Product, 而不是現(xiàn)在的i_product.
后來(lái)Jerry想了個(gè)辦法,即修改Pretty Printer的處理邏輯:如果掃描到代碼里出現(xiàn)的單詞代表一個(gè)CDS view時(shí),讓Pretty Printer高抬貴手,不對(duì)這個(gè)單詞進(jìn)行任何操作。
我把這個(gè)方法分享到了SAP社區(qū)上:
Bypass CDS view name case conversion in ABAP source code pretty printer
測(cè)試結(jié)果:紅色下劃線標(biāo)注的ABAP變量名被自動(dòng)格式化成全部小寫(xiě),而CDS view的名稱I_Product仍然保持不變。這正是我們期望的結(jié)果。
兩年過(guò)去了。如今,這個(gè)問(wèn)題已經(jīng)有了優(yōu)雅的解決方案:如果想使用駝峰命名法,只需要在ABAP Development Tool里把Keep Camel Case Identifiers前面的勾選上即可。
大家可以比較一下這個(gè)勾如果不打上會(huì)是什么樣的效果:
這意味著偏愛(ài)駝峰命名法的ABAP開(kāi)發(fā)人員,如今也可以在IDE的支持下進(jìn)行ABAP代碼編寫(xiě)了。
SAP社區(qū)上有ABAP開(kāi)發(fā)人員聲稱,這是他們盼望了很久的功能:
注意:目前這個(gè)功能只在S/4HANA和SAP云平臺(tái)ABAP編程環(huán)境可用。要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":
總結(jié)
以上是生活随笔為你收集整理的ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: resolveType - when i
- 下一篇: 梦幻手游藏宝阁买号多久到(《梦幻西游》电