代码之家  ›  专栏  ›  技术社区  ›  Omar Kooheji

编写代码生成器的最佳实践

  •  2
  • Omar Kooheji  · 技术社区  · 15 年前

    我将要编写一个应用程序,它将利用状态和命令模式。各州将充当指挥部的门面。

    有7个状态和大约50个命令,不是所有的状态都可以执行,任何不能执行的方法都会抛出一个execption,否则它会创建命令,执行它并返回结果。

    因为有这么多的类是如此相似,我想写一些代码来自动生成代码。我在excel中绘制了一个矩阵,其中的状态允许执行哪些命令,我计划将其输出到csv并将其用作代码生成的基础。

    我的想法是手动编写各个类实现的接口,然后将其用作代码生成器的模板。

    这是个好主意吗?有没有人有什么好的方法来做这件事?

    我将用Java编写代码,但是我认为基本原则适用于任何面向对象语言的代码生成。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Dave Markle    15 年前

    好吧,如果这些类真的那么相似,为什么不从一个公共的命令对象派生它们,而不是使用代码生成呢?

    您所说的似乎是一个基本的规则引擎——您正在创建的规则引擎基本上是运行每个命令的引擎。

        2
  •  0
  •   Vicky    15 年前

    我们使用excel宏来生成fsm代码(在c中),它对我们非常有效。我建议的一件事是尽可能多地对生成的代码使用模板,以便其他用户可以更改模板以匹配他们喜欢的样式。

        3
  •  0
  •   Steve Gilham    15 年前

    我目前正在做一个项目,在类似的场景中大量使用代码生成;在处理生成的代码一段时间后,我发现在使用生成来提供大量死记硬背的代码的情况下,如果一个解决方案更多地使用泛型类型(包含重复位)和独立的函数类型来保存特定的逻辑,那么实际上会减少要维护的代码量。

    在Java中,编写函数指针的语法比其他语言更为繁琐(另一类要实现的接口),但是当您分析问题足以创建模板时,就已经完成了抢占式重构。