我即将编写一个将利用状态和命令模式的应用程序。国家将充当命令的外观。
有7个状态和大约50个命令并不是所有状态都可以执行,任何不能执行命令的方法都会抛出一个execption,否则它将创建命令,执行它并返回结果。
由于有很多类会如此相似,我正在考虑编写一些代码来自动生成代码。我在Excel中绘制了一个矩阵,其状态允许执行哪些命令,我计划将其输出到csv并使用它作为代码生成的基础。
我的想法是手动编写各个类实现的接口,然后将其用作代码生成器的模板。
这是个好主意吗?有没有人有关于最佳方法的任何提示?
我将用Java编写代码,但我认为基本原则适用于任何OO语言的代码生成。
答案 0 :(得分:2)
那么,如果这些类真的相似,为什么不从常见的Command对象派生它们而不是使用代码生成呢?
您所谈论的内容似乎是一个基本的规则引擎 - 您正在制作的规则引擎基本上就是运行每个命令的内容。
答案 1 :(得分:0)
我们使用Excel宏来生成这样的FSM代码(在C中),它对我们来说非常有用。我建议的一件事是尽可能多地使用模板生成代码,以便其他用户可以更改模板以匹配其首选样式。
答案 2 :(得分:0)
我正在研究一个项目,该项目大量使用类似场景的代码生成;在使用生成的代码一段时间之后,我发现在使用生成来提供大量rote代码的情况下,更多地使用泛型类型(其中包含重复位)和独立函数类型的解决方案保持特定的逻辑,实际上会减少要维护的代码量。
在Java中,编写函数指针的语法比其他语言(实现类的另一个接口)更麻烦,但是当你分析问题足以创建模板时,你已经完成了先发制人的重构。