ABAP方法的exporting型別引數,需要在方法實現最開始顯式初始化麼
# Sent: Monday, September 23, 2013 10:59 AM
Subject: code review遺留問題: is it necessary to explicitly initialize the exporting parameter within implementation itself
像下圖裡的exporting parameter需要在method 實現最開始時顯式CLEAR麼?
答案是it depends.
pass by value checkbox預設未選中,即pass by reference,此時實參的reference直接傳到method 實現裡,修改method裡的形參即直接修改了實參。
如果是pass by value,在runtime進入method執行時,abap runtime自動為輸入和輸出形參建立local object,然後把輸入實參的value copy到local object裡,method裡的計算都儲存在輸出形參的local object裡,method執行結束後再把local object的值copy到輸出實參。
在pass by reference的情況下,exporting引數在進入函式內時不會自動被初始化,而仍然為傳入時實參的值,因此需要developer 自己負責去初始化,否則可能會出現unexpepected的behavior。
什麼時候用pass by reference,什麼時候用pass by value?
Pass by reference效能更好,但需要developer自己在實現裡初始化exporting parameter
如果期望輸出引數僅當method 成功執行之後才返回給caller,用pass by value
如果引數是一個很複雜的structure,比如nested table,或者按照abap help裡面的建議值—超過100bytes後最好用pass by reference。
二者更詳細的區別參考abap help。
Extended check會自動把所有違反規則的code 列出來,比如CL_CRM_SOC_FND_ACCESS_IMPL 有17處:
這些issue被categorize成programming guideline violation,不會算作ATC error。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2679519/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 方法中引數的型別詳細型別
- 查詢初始化引數的方法(二)
- 查詢初始化引數的方法(一)
- 查詢初始化引數的方法(七)
- 查詢初始化引數的方法(六)
- 查詢初始化引數的方法(五)
- 查詢初始化引數的方法(四)
- 查詢初始化引數的方法(三)
- 函式引數 引數定義函式型別函式型別
- 【HttpClient】httpclient之post 方法(引數為Map型別)HTTPclient型別
- Gson通過藉助TypeToken獲取泛型引數的型別的方法泛型型別
- Python 序列型別以及函式引數型別Python型別函式
- php 的函式引數值型別限定PHP函式型別
- php的函式引數值型別限定PHP函式型別
- PyTorch常用引數初始化方法詳解PyTorch
- 實現Nest中引數的聯合型別校驗型別
- 方法(函式)的定義與引數函式
- 三種方法實現:獲取 url 中的引數
- JavaScript封裝方法,相容引數型別為Number和StringJavaScript封裝型別
- Python解析引數的三種方法分別是什麼?Python
- php函式引用傳遞引數的方法PHP函式
- 從建構函式得到引數型別函式型別
- 【ASP.NET Core】MVC操作方法如何繫結Stream型別的引數ASP.NETMVC型別
- 解析型別引數型別
- slave_rows_search_algorithms引數hash_scan的實現方法Go
- SpringBoot 介面引數解密的實現方法(使用註解)Spring Boot解密
- ABAP 方法呼叫的引數傳遞裡,透過引用傳遞的方式,能修改原始引數值嗎?
- 深度學習方法(六):神經網路weight引數怎麼初始化深度學習神經網路
- 【24】若所有引數皆需型別轉換,請為此採用non-members函式型別函式
- 函式訪問引數受限的處理方法函式
- javascript中對變數型別的判斷方法JavaScript變數型別
- JavaScript判斷變數型別的四種方法JavaScript變數型別
- 行動硬碟引數錯誤怎麼解決?行動硬碟開啟出現引數錯誤的修復方法硬碟
- 星型轉換實現方法
- c# 方法引數_值引數C#
- c# 方法引數_引用引數C#
- SQL引數資料型別text對於replace函式的引數1無效SQL資料型別函式
- 【Scala之旅】型別引數型別