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