2009-07-16 58 views
2

我即將編寫將使用狀態和命令模式的應用程序。美國將作爲命令的外表。編寫代碼生成器的最佳做法

有7個狀態和大約50個不是所有狀態都可以執行的命令,任何不能執行命令的方法都會拋出一個執行命令,否則它將創建命令並執行並返回結果。

由於有這麼多類將會如此相似,我正在考慮編寫一些代碼來自動生成代碼。我已經在Excel中繪製了一個矩陣,其中哪些狀態允許執行哪些命令,並且我計劃將其輸出到csv並將其用作代碼生成的基礎。

我的想法是手動編寫各種類實現的接口,然後將其用作代碼生成器的模板。

這是個好主意嗎?有沒有人有任何提示,以最好的方式去做這件事?

我會用Java編碼,但我認爲基本原理適用於任何OO語言的代碼生成。

+0

可以[ragel](http://www.complang.org/ragel/)幫助你的情況? – jfs 2012-05-31 16:00:25

回答

2

那麼,如果類真的很相似,爲什麼不從一個普通的Command對象派生它們而不是使用代碼生成?

你在說什麼似乎是一個基本的規則引擎 - 你製作的規則引擎基本上是運行每個命令的東西。

+0

我的設計有抽象命令類的空間,但是我仍然需要編碼50個類,因此代碼生成。 – 2009-07-16 10:08:21

0

我們使用Excel宏來生成FSM代碼(使用C語言),它對我們來說非常有效。我建議的一件事就是儘可能多地爲所生成的代碼使用模板,以便其他用戶可以更改模板以匹配其首選樣式。

0

我正在開發一個項目,此時大量使用代碼生成來處理類似的場景;經過一段時間處理生成的代碼後,我發現在使用生成提供大量死記硬背代碼的情況下,更多地使用泛型類型(其中包含重複位)和獨立函數類型保持特定的邏輯,實際上會減少要維護的代碼量。

在Java中,用於編寫函數指針的語法比其他語言(另一個類需要實現的另一個接口)更麻煩,​​但是當您分析完這個問題足以創建模板時,我已經完成了所需的先發制人的重構。