iT邦幫忙

2021 iThome 鐵人賽

DAY 30
0
Mobile Development

如何使用 Kotlin Annotation Processor 做出自己的 Custom Data Parser Library系列 第 30

總結

這個系列開始我們先介紹了 RSS feed 裡面的內容和不同平台的格式,也了解到要一次處理這麼多又有可能重複的資訊是一件不簡單的事情。接著,我們開始練習用一些既有的 API 做出 RSS 的 parser ,也分別為了不同平台的效能去選擇要使用的 API ,像是 Kotlin 的 DOM Parser 和 Android 的 XmlPullParser 。理解了 parser 之後,我們就開始 annotation 相關的實作,從最基本的 annotation 到進階的 annotation processor ,也使用了 KotlinPoet 寫出了很多的 Code Generator ,而不同的 generator 可以產生各種程式碼檔案。在後半部的地方,我們也針對了實作的 parser 和 reader 進行單元測試的規劃和操作,以確保產生出來的程式碼沒有功能上的問題。除了測試之外,我們也了解到要怎麼樣透過新的 KSP library 改進我們的程式碼,加速程式碼產生的速度。當然,我們做完了 library 也要提供給其他的開發者使用,所以我們使用了最簡單易學的方式把 library 發佈出去。

在剛開始寫這個系列的時候,我覺得有太多東西想分享,但卻不知道要怎麼把實作脈絡講清楚,是 annotation 先講呢?還是 XML parser 先講?? 我是今年才開始寫鐵人賽的新手,我花了滿多時間在決定內容的講解順序,另一方面又想說這個題目實在是太冷門了,大多數的人開發很少會遇到需要自己寫 annotation processor ,會不會大家都沒甚麼興趣。 許多鐵人賽的前輩們真的很厲害,可以把一件事情用這三十天的文章好好說完而且有條有理,我要向他們好好學習,下次可以寫得更好,尤其是 KSP 的部分沒有多著墨,因為我自己也是剛上手沒多久,還在實作當中,所以分享的內容佔比少了些。原本打算是一邊寫文章,一邊實作,但我太天真了,每天寫文章就佔掉大部分的時間。之後 KtRssReader 的 KSP 實作和 code review 完後,會再上來跟大家分享實作踩到的坑和需要注意的事情,把之前沒提到的事情補上來,我會把連結補在 KSP 那幾篇的下面。

最後的最後,我想要特別感謝一群跟我一起做 KtRssReader 的朋友們,謝謝 Hsien 、 小汪、 Zoey 和 Amy ,有了大家的幫忙才有了這個 library ,希望之後也還有機會一起寫個東西!/images/emoticon/emoticon12.gif


上一篇
發佈 Library
系列文
如何使用 Kotlin Annotation Processor 做出自己的 Custom Data Parser Library30

尚未有邦友留言

立即登入留言