元编程,它有什么用?

hvg*_*des 5 metaprogramming

所以元编程 - 你可以在运行时修改类/对象,注入新的方法和属性.我知道它有利于框架开发; 一直在使用Grails,该框架在运行时为您的类添加了一堆方法.在User对象上有一个name属性,而bamm,你得到一个在运行时注入的findByName方法.

  1. 我的描述是否完全描述了这个概念?
  2. 除了框架开发之外,(具体示例)还有什么好处?

Rui*_*ado 3

对我来说,元编程是“编写程序的程序”。

元编程特别适合重用,因为它支持泛化:您可以定义属于特定模式的一系列概念。然后,通过可变性,您可以将该概念应用到类似但不同的场景中。

最简单的例子是 @Sjoerd 提到的 Java 的 getter 和 setter:

getter 和 setter 都遵循明确定义的模式:getter 返回类成员,setter 设置类成员的值。通常,您会构建所谓的模板来允许应用和重用该特定模式。模板的工作方式取决于所使用的元编程/代码生成方法。

如果您希望 getter 或 setter 的行为方式略有不同,您可以向模板添加一些参数。这就是可变性。例如,如果您想在获取/设置时添加额外的处理代码,您可以添加一段代码作为可变性参数。混合自定义代码和生成的代码可能很棘手。据我所知, ABSE是目前唯一一种原生支持自定义代码直接作为模板参数的 MDSD 方法。