7月程式設計心得

勇哥编程游记發表於2024-08-10

7 月份非常忙碌,想系統性的寫一篇文章,好幾次不知道如何下手,後來想想還不如順其自然,寫一點自己的學習心得體會。

這篇文章,聊聊 7月份筆者的程式設計心得 ,希望對大家有所幫助。

1 IntelliJ IDEA 社群版

工欲善其事,必先利其器。

筆者的 Mac 電腦安裝了 IntelliJ IDEA Ultimate Edition 2018 ,一次非正常關機,Ultimate Edition 再也啟動不了,不願意再用破解版了,於是下載了 IntelliJ IDEA 社群版。

體驗一番,感覺很驚喜,啟動速度非常快,介面非常簡潔。

開發過程中,基本沒有卡頓的場景,市場中免費的外掛基本可以滿足個人的需求 。

2 Hutool 初體驗

Hutool 是最近幾年非常火的 Java 工具類庫 , 筆者一直沒有使用過,這個月有機會就嘗試了一番。

這次實戰主要使用了 Hutool 的兩個功能: HTTP 客戶端JSON 解析工具

1、HTTP 客戶端

我們可以按需依賴,比如我們只需要 HTTP 客戶端工具,只需要依賴如下元件即可:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-http</artifactId>
    <version>5.8.25</version>
</dependency>

下圖是執行 HTTP GET 的流程:

假如我們想換成 POST 請求,只需要簡單的修改:

筆者自己也封裝過 HTTP 工具類,大體的套路類似:

上圖,筆者定義一個 HTTP 工具類,在類中定義多個靜態公共方法供使用。這個工具類非常容易實現,但還是顯得非常粗糙。

而 Hutool HTTP 工具的使用方式是鏈式呼叫 ,所謂鏈式呼叫是透過設定方法的返回值,讓返回值變為物件自身,從而實現連續的方法呼叫。

Hutool 提供了 GenericBuilder 類,可以實現鏈式呼叫,具體實現程式碼如下:

使用鏈式呼叫提高了程式碼的可讀性和可組合性,使得程式碼更加簡潔、靈活和易於維護,這種程式設計技巧值得我們學習。

2、JSON 解析工具

筆者曾經用得比較多的 JSON 解析工具是阿里的 FastJSON , 專案中使用的是 Hutool JSON ,所以也就嘗試用了一下。

筆者對接的業務介面返回的結果如上圖的格式,定義了一個響應類:

然後直接將結果轉換成相關的資料實體:

比如當解析商品資訊時,呼叫如下方法:

從使用體驗來看,Hutool JSON 使用起來和 FastJSON 差異並不大,API 非常類似,使用起來還是很絲滑的。

3 整合電商供應鏈

某電商公司有一個自研的商城 APP ,商品來自 A 供應鏈,公司領導談了另一個供應鏈 B , 想讓技術團隊接入進來,從而豐富商城的商品多樣性。

但兩個月過去了,技術團隊進展非常緩慢,任務交給筆者後,筆者花了 1 個月時間,初步將供應鏈整合一起。

上圖是使用者下單的原有流程,當支付成功之後,支付服務會供應鏈 A 的提交訂單服務,建立供應鏈訂單,並回寫到資料庫。

假如引入了多個供應鏈,對於各個業務系統來講,與多個供應鏈系統互動就會變得複雜,因此從服務呼叫角度來講,筆者引入了一個獨立供應鏈服務 ,下圖是供應鏈服務的設計概覽。

不同的供應鏈公司會提供不同的 API 介面 ,假如每次呼叫供應連結口使用 if else 來判斷,程式碼就會變得極其難以維護。

因此,筆者設計了一個介面卡層,類似於筆者開源的簡訊服務的介面卡層。

簡訊服務介面卡層

不過相比簡訊服務的 SPI 機制,考慮到研發成本,同時也方便其他研發同學維護,筆者將供應鏈介面卡做了非常大的簡化。

供應鏈介面卡層

供應鏈介面卡核心介面如下圖:

呼叫供應連結口時,透過介面卡構造器建立介面卡,然後呼叫介面卡的方法即可。

經過三週左右的研發,筆者基本將供應鏈 B 整合了進來,同時將供應鏈服務化,提升了系統的可維護性。

4 寫到最後

這次整合供應鏈的任務,雖然基本完成了,但筆者內心並沒有很多成就感,一方面是因為曾經經歷了無數次大大小小的重構,感官都有點麻木了。

另一方面,很多管理者一直都認為技術很簡單,可事實是,沒有對技術的投入和重視,有些事情他們真的搞定不了。

技術一直都是:短時間被高估,長時間被低估。


Hutool 地址:https://hutool.cn/

IDEA 社群版:https://www.jetbrains.com/idea/download/

相關文章