Jerry進入SAP成都研究院前,一直是用C/C++開發,因此剛接觸ABAP,對於她在某些語法環境下大小寫敏感,某些環境下不敏感的特性很不適應。那時候Jerry深深地懷念以前在C/C++編程時遵循的駝峯命名法和匈牙利命名法。編程
駝峯命名法:函數名中的每個邏輯斷點都有一個大寫字母來標記。方法和變量名的首字母通常小寫,這叫小駝峯命名法,例如printEmployeePaychecks. 類名的首字母通常大寫,這叫大駝峯命名法,好比EmployeeBonusPlanManager.匈牙利命名法: 變量名= 類型 + 描述。類型通常以一個或多個小寫字母開頭做爲前綴,後面跟着一個或多個單詞描述該變量的用途。函數
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的原創文章,請關注公衆號"汪子熙":