SAP之ABAP吐槽

工作快一年了,誤打誤撞一頭扎進SAP,用起了以前從未聽過的abap語言.

abap語言就是在黑客與畫家中被Paul Graham極力挖苦的cobol語言的后代.當初看到add 1 to counter.也是被極度震驚了,現(xiàn)在則更多的是麻木,因為abap語言中弱智的語法太多了.最近的項目就是掃描abap源代碼,更是見識了底層的那令人震驚的語法.我在想,abap我都能用的很好,還有什么語言可以難到我?!

這里附上一段剛?cè)腴Tabap時寫的吐槽,事實證明我當時的吐槽是對的:

ABAP吐槽!!!

學了一段時間的ABAP語法,真是對ABAP很多的語法設(shè)計無力吐槽, 今天實在忍不住了,我要吐槽!!!
ABAP的語法肯定是一個龐大團隊設(shè)計的,很多地方混亂/臃腫/不明所以,和我學過其他的語言如C/C++/Java/Python/VB相比,語法真是一坨屎!!!有意思的是我列舉的其他語言都是一個或幾個人設(shè)計的,而ABAP,肯定是一個團隊設(shè)計的.我估算ABAP基本語法是一個團隊,屏幕邏輯流語法是一個團隊,ABAP Object是一個團隊,加上人員更迭,規(guī)范不嚴才導致現(xiàn)在這些顯而易見的問題.

ABAP的混亂

Function和Method的參數(shù)是極好的例子,簡直非人類.import/export/importing/exporting/exception/exceptions,關(guān)鍵字真尼瑪多啊! BUT! 不要看import就是import喔,它也可能是export,定義函數(shù)是import就是'import',調(diào)用時呢,importing就是'export'.意義相反噢,不要搞錯了.從這一處的混亂可以大致猜測定義Function和調(diào)用Function的語法是由兩撥人發(fā)明的,都是從自己的角度考慮問題.碰到關(guān)鍵字動詞要考慮ing,碰到名稱要考慮加不加s,真是痛苦,感覺自己不是在編程,而是在復習英語.

ABAP語法和屏幕邏輯流語法不兼容也是一個鮮活的例子.邏輯流常用的process有PBO和PAI,在PBO或PAI里調(diào)用module達到模塊化的目的.調(diào)用module的是屏幕邏輯流語法,定義實現(xiàn)module用ABAP語法.
還有空格問題也比較混亂,不記住基本都會用錯,小括號兩側(cè)要不要加空格,減號-兩側(cè)要不要加空格都是有講究的.具體就不細說了,嚴重影響篇幅.

ABAP的臃腫

ABAP語法中很少用到中括號或大括號(或者說沒有用到?我是沒見過),所以一個語法塊的開始與結(jié)束就需要用end嘍.而一個事件塊的結(jié)束又沒有end喔,當心了.

關(guān)鍵字暴多!ABAP的語法離了關(guān)鍵字完全沒法活啊,極難找到哪條語句里面沒有關(guān)鍵字啊(看了標準教程得知每條語句第一個單詞必為關(guān)鍵字!),這些關(guān)鍵字還大寫,還特么沒有簡寫, 讀起來用起來暴費勁! 最尼瑪關(guān)鍵的是ABAP自帶的舊版編輯器竟然沒有關(guān)鍵字提示,不得不一個個手輸啊,關(guān)鍵字definition/inheriting/implementation可真夠長的!新版編輯器倒是提供關(guān)鍵字提示功能了. 可是! 可是! 用新版編輯器打開舊版編輯器創(chuàng)建的代碼, 竟然亂碼!!我靠,第一次碰到英文也亂碼,public能給你整成pu /n blic,CLASS能格式化為cl /n ass,唉, 無力吐槽, 這是不是同一家公司的產(chǎn)品?!?!
整體語法太依賴關(guān)鍵字,入門雖簡單但是熟悉了后會覺得很繁瑣.舉個栗子: 調(diào)用對象中的函數(shù)不是go_obj->create(),而是CALL METHOD go_obj->create,可是又有CALL METHOD go_obj->create(f)這樣的用法,既混亂又臃腫.
在面向過程的ABAP中到處都是全局變量,為了區(qū)分所有變量的范圍,在變量命名時不得人工添加gt_gs_lt_ls_gv_lv_這些前綴以增加代碼可讀性.

ABAP的不明所以

縮寫沒有規(guī)范.我是沒感覺到有什么規(guī)律,大部分都只能碰到一個查一下再記住,沒有什么特別的縮寫規(guī)律.比如說DDIC是Data Dictionary的縮寫,ALV是ABAP List Viewer的縮寫,tab一般是table的縮寫,ref是reference的縮寫.PF-status這個縮寫我一直都不知道全稱是什么,苦惱. 還有slis,slvc,lvc,cl,kkb什么的,都是不知全稱的.

合寫就更混亂了,table name可能合寫為table_name/tabname/tablename,field catalog可能合寫為fieldcatalog/fieldcat. 這些混亂的用法就導致碰到一個沒見過的詞時經(jīng)常不明所以,搞不定確切含義.同時在使用沒用過的功能時不能按規(guī)律的猜測,必須翻看文檔,否則極易用錯.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 昨天看到最震撼的消息莫過于年僅28歲的喬任梁意外死亡。想必其中的細枝末節(jié)大家也看得很多了。震驚嘆息的同時也讓我想到...
    喵辛束閱讀 2,280評論 14 34
  • 很多人問我,我高中生活怎么過得,重來你會怎樣。我回道,遇到一真心相愛的人,碰到幾個知心好友,即使高考太不如意,愛人...
    魯家欣閱讀 266評論 0 0
  • 我行在路上 清瑟的秋風吹亂我的發(fā)梢 芬芳的歲月輕吻我的面龐 流淌的年輪繞過我的指尖 風過,葉離落 滿地,一片繽紛一...
    纖子墨閱讀 436評論 2 13
  • 受邀,參加由百合花家委會倡議的秋季郊游,于是,趁著秋意正好,一起走走…… 從未開過這里,于是,都抱著好奇,開啟了一...
    百合花教主閱讀 848評論 0 1

友情鏈接更多精彩內(nèi)容