小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

什么是 SAP ABAP XCO?

 汪子熙 2024-12-15 發(fā)布于上海

筆者之前的文章,通過 JavaScript 的展開操作符 ...,和 ABAP 的 BASE 關鍵字做對比,展示了這兩種編程語言,面對同樣的語言特性,采用不同風格的操作符來實現(xiàn)的例子。

從 ABAP 一個相對冷門的關鍵字 BASE 說起,聊聊 ABAP 和 JavaScript 的語言風格差異

隨著 ABAP 740 開始不斷引入的一系列新的關鍵字,大家不難體會到:隨著現(xiàn)代軟件開發(fā)技術的快速發(fā)展,ABAP 這門編程語言屆的老前輩,也在不斷借鑒其他后輩編程語言的優(yōu)點,對優(yōu)秀的編程思想進行兼收并蓄,以增強自身能力。

使用過 JavaScript/TypeScript 或者 Java 的開發(fā)人員,想必都聽說過 Fluent Interface Pattern 這個概念,本文余下部分簡稱 FIP.

FIP 的主要目的是通過流暢的調用鏈,提供直觀且人性化的接口,使得代碼更加易讀和易用。FIP 在領域特定語言 (Domain Specific Language, DSL)、構建器模式 (Builder Pattern) 和配置類方法中使用尤其廣泛。

在傳統(tǒng)的面向對象編程中,方法調用可能會顯得繁瑣,尤其是當一個類包含大量的配置方法時,調用者需要多次調用 setter 方法以配置對象的多個屬性。

下面是一個 Java 的例子。

Car car = new Car();
car.setColor("red");car.setEngine("V8");car.setWheels(4);

可以想象,如果用 ABAP 復刻上面的代碼,代碼行數(shù)還會膨脹數(shù)倍。

FIP 模式通過將每個方法的返回值設計為當前對象 (Java 中的 this 和 ABAP 中的 me),允許連續(xù)調用多個方法,形成一種鏈式調用的方式。

這種設計讓代碼的表達更加自然流暢。

上面的例子可以用 FIP 改寫成: 

Car car = new Car()    .setColor("red")    .setEngine("V8")    .setWheels(4);

相比較,不難看出,F(xiàn)IP 風格的代碼,結構簡潔,語義清晰,開發(fā)者可以更直觀地理解代碼邏輯。

Java 的 Stream API 是基于 FIP 模式的經(jīng)典實現(xiàn),通過鏈式調用實現(xiàn)了對集合的操作。

下面代碼將數(shù)組中以 A 開頭的元素提取出來,并轉換成大寫。

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<String> result = names.stream()    .filter(name -> name.startsWith("A"))    .map(String::toUpperCase)    .collect(Collectors.toList());
System.out.println(result); // 輸出: [ALICE]

Java Stream API 的設計體現(xiàn)了流暢接口模式的核心思想,每一步操作返回一個新的 Stream 對象,供下一步操作使用。

再比如現(xiàn)代 HTTP 客戶端庫(如 OkHttp 或 Apache HttpClient)也采用了 FIP 模式。

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()    .uri(URI.create("https://"))    .header("Content-Type""application/json")    .GET() .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());

通過鏈式調用,開發(fā)者可以使用近乎自然語言的方式,構建復雜的 HTTP 請求。

早期的 ABAP 是一門純粹的面向過程的編程語言,所以不可能有所謂的鏈式方法調用的概念。

不過就像本文開頭提到的那樣,ABAP 也在積極吸取其他編程語言的優(yōu)秀特性并融入于自身。

看下面這個 SAP BTP ABAP 編程環(huán)境中的例子:

DATA(ld_string) = `This is my new text string`.
out->write( xco_cp=>string( ld_string )->to_upper_case( )->append( ` with addition` )->split( ` ` )->value ).

首先使用 xco_cp 的靜態(tài)方法 string,將一個字符串作為輸入?yún)?shù),構造一個 if_xco_string 的實例。這個實例封裝了對 ABAP 字符串類型的常用操作,比如大小寫轉換,字符串查找,拼接和拆分等等。

每個操作通過接口的一個方法實現(xiàn),這些方法返回 if_xco_string 自身,以支持鏈式調用。

上面例子的代碼,語義一目了然:首先將字符串轉換成大寫,然后尾部添加 with addition, 最后根據(jù)空格符號進行拆分。

這種基于 FIP 的字符串操作實現(xiàn)方式,讓開發(fā)者向寫法相對繁瑣的傳統(tǒng) ABAP 字符串函數(shù)說再見了。

采用 FIP 模式的 ABAP 字符串操作方式,能在極大程度精簡代碼的同時,仍然保留極高的代碼可讀性。

那么,XCO_CP 中的 XCO 和 CP 分別代表什么?

SAP 幫助文檔有詳細介紹:XCO 代表 Extension Components, CP 代表 Cloud Platform.

XCO 是一個庫,是一個現(xiàn)代 ABAP 通用開發(fā)庫,采用現(xiàn)代編程方式對 ABAP 平臺的通用功能進行封裝。帶有 CP 的后綴則是這個庫針對云平臺的專用版本。

https://help./docs/btp/sap-business-technology-platform/xco-library

本公眾號后續(xù)將對 XCO 庫進行更多的深入介紹。

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章