代码之家  ›  专栏  ›  技术社区  ›  hvgotcodes

元编程,有什么用?

  •  5
  • hvgotcodes  · 技术社区  · 14 年前

    所以,元编程——你可以在运行时修改类/对象,注入新的方法和属性的想法。我知道它有利于框架开发;一直在使用Grails,并且该框架在运行时向类中添加了许多方法。在一个用户对象上有一个name属性,在bamm中,可以在运行时注入findbyname方法。

    1. 我的描述完全描述了这个概念吗?
    2. 除了框架开发,它还有什么好处(具体示例)?
    2 回复  |  直到 14 年前
        1
  •  3
  •   Rui Curado    14 年前

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

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

    最简单的例子是Java的吸气剂和定位器,如Sjoerd所提到的:

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

    如果希望getter或setter的行为方式略有不同,可以向模板添加一些参数。这是 易变性 . 例如,如果要在获取/设置时添加其他处理代码,可以添加一个代码块作为可变性参数。混合自定义代码和生成的代码可能很棘手。 ABSE 是我知道的唯一一个本地支持自定义代码作为模板参数的MDSD方法。

        2
  •  1
  •   Sjoerd    14 年前

    元编程不仅可以在运行时添加方法,还可以在编译时自动创建代码。即代码生成代码。

    • Web服务(即方法是在WSDL中定义的,您希望使用它们,就好像它们是对象上的真实方法一样)
    • 避免使用样板代码。例如,在Java中,应该使用GETTER和SETTER,但这些属性可以自动地用于大多数属性。