如何使用java代码生成_使用Java成功生成代码的7个技巧
如何使用java代碼生成
作為介紹,最近我有點安靜,部分原因是我一直在忙于Chronicle-FIX的工作 。 這是Chronicle-Enterprise套件中的一個新的超低延遲庫,我們證明了該庫可以在低個位數(shù)微秒內(nèi)解析和存儲消息。 當(dāng)然,它利用了我們的開源產(chǎn)品Chronicle-Queue , Chronicle-Network和Chronicle-Bytes 。
我們實現(xiàn)的低延遲的秘密之一是,每個實現(xiàn)都可以完全基于其所需的架構(gòu)來生成自定義的修復(fù)引擎。 為了實現(xiàn)這一點,我構(gòu)建了很多代碼生成代碼。
因此,我想我將分享在此過程中學(xué)到的一些經(jīng)驗教訓(xùn)。
1.使用代碼生成庫
到目前為止,這是最重要的提示。 我很難強調(diào)這有多重要,以及您將節(jié)省多少時間和復(fù)雜性。 您真的不想在創(chuàng)建字符串文字時試圖弄亂代碼中的正確間距或加倍和三倍轉(zhuǎn)義的引號引起麻煩!
我使用了JavaPoet ,它是開源的(Apache 2),非常好。 它處理了我想做的所有事情,包括一些非常復(fù)雜的泛型。 它唯一不支持的事情就是聲明靜態(tài)導(dǎo)入,但這很容易解決,對于一個優(yōu)秀的庫來說,它并不重要。
JavaPoet將Java代碼分解為對象:TypeSpec(類或接口),MethodSpec(方法),FieldSpec(字段),CodeBlocks(代碼塊)。 它巧妙地為基于printf模式的語句(代碼行)提供了豐富的語法。 您會發(fā)現(xiàn),遵循這種范式將使您擁有更簡潔,更簡潔的代碼,而不是自己動手編寫代碼,這很容易使這類問題的過程編碼路線更加混亂。
2.首先手動編寫代碼
在沒有先編寫示例代碼的情況下,請勿嘗試和生成代碼。 通過后視鏡進行編碼不是一件容易的事,如果您在進行過程中對其進行處理,則變得很復(fù)雜。
首先花一點時間手工編寫代碼,然后為其生成代碼。
另外,您將希望產(chǎn)生盡可能最佳的代碼,這只有在您首先花費時間和精力手工編寫代碼的情況下才能完成。
3.生成盡可能少的代碼
僅生成所需數(shù)量的代碼。 因此,例如,如果所有生成的類都需要實現(xiàn)某個方法,請使用可以由生成的代碼調(diào)用的幫助程序類,而不是多次生成該方法。 或者,獲取您的代碼以使用基類上的方法擴展靜態(tài)基類。
4.確保可以一次性吹走所有生成的代碼
不要將靜態(tài)代碼與生成的代碼混合使用。 您要做的是擁有com.test.generatedcode.xx.xx類的軟件包。 在每次測試/開發(fā)運行結(jié)束時,您都應(yīng)該能夠刪除整個文件夾com/test/generatedcode ,這意味著該文件夾中根本沒有靜態(tài)代碼。
您會發(fā)現(xiàn)以這種方式安排代碼將使測試周期變得更快。
5.從少量可驗證的代碼開始
代碼生成的重點通常是產(chǎn)生大量代碼。 很難測試您生成的代碼是否正確。 因此,從一個小而復(fù)雜的示例開始,您可以通過閱讀代碼進行檢查,并為其提供測試用例。
希望以后的情況會更多。
6.生成測試用例
如第5點所述,很難在所有情況下驗證您的代碼生成器是否正確。 因此,您應(yīng)該嘗試將測試用例作為所生成代碼的一部分進行生成。 然后,您可以從生成器生成許多偏斜的復(fù)雜代碼,并對其進行測試。
7.冗長
從本質(zhì)上講,生成代碼的代碼可能很難閱讀和理解。 代碼生成代碼永遠不必太快,因此不必?fù)?dān)心使其變得冗長。 使用大量評論,但更重要的是,嘗試使其盡可能明確,以便您可以在一年內(nèi)回顧它并仍然可以對其進行維護。
翻譯自: https://www.javacodegeeks.com/2015/12/7-tips-successful-code-generation-java.html
如何使用java代碼生成
總結(jié)
以上是生活随笔為你收集整理的如何使用java代码生成_使用Java成功生成代码的7个技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鲍鱼几个头指的是什么 鲍鱼几个头的介绍
- 下一篇: 什么是法特莱克训练法 法特莱克训练法介绍