您如何看待这个主题?
元编程最常与非动态语言相关联,因为在没有大量非生产性和非智能代码行的情况下,实现某些行为(例如实现ORM)的过程比较困难。
但是,即使在诸如PHP之类的更动态的语言中,代码生成也可以真正节省生命,并大量提高生产率。在现代框架中,使用脚手架为您声明的某个业务对象生成大多数通用模型,形式,测试和操作是非常普遍的。这就是诸如symfony或RoR之类的框架取得如此巨大成功的原因之一,这些代码生成工具可以非常快速地生成一致的代码并提高程序员的生产率。
在网站中,大多数交互都围绕四个主要动作进行:
- 创建一个元素
- 检索一组元素(可能进行过滤)
- 使用新属性更新元素
- 删除一组元素
至少围绕这四个主要动作的所有事情都可以,并且恕我直言,应该使用代码生成工具来实现最高生产力。
在我的公司中,我们使用symfony,而它的admin-generator是一个出色的工具,它甚至可以在运行时生成代码(并将其缓存),这意味着我们甚至不需要使用任何类型的任务或外部工具即可生成新代码,我们只需要清理缓存即可。我强烈建议您将这种工具用于CRUD操作。
但是,完成symfony杰出贡献者的工作并非易事。我本人已经实现了一些代码生成任务,并且要做到真正一致的事情,并且要进行广泛的实现以涵盖大多数极端情况,这并不容易。
它会真正提高您的生产力吗?
我认为元编程在较低级别的工作(框架,缓存,编译器等)中非常重要,但是如果要在业务层上进行操作,则必须格外小心。
毫无疑问,使用代码生成是提高生产力的主要方法。实现自己的代码生成工具,除非您自己构建框架,否则无需做太多事情。
在书籍,博客,幻灯片等中,关于该主题有哪些好的资源?
理解编程的最佳资源始终是良好且注释良好的源代码。我想说,研究RubyOnRails和Symfony管理员生成器是一个好主意。