跳转至

源代码生成

本文为《深入实践 kotlin 元编程》读书笔记,想要深入了解 kotlin 元编程的同学可以阅读原书。

解决重复或者相似的代码逻辑最直接的方案就是提取其中的共性,编写程序生成这些代码, 这实际上是编译阶段最简单的元编程形式。

标准库的代码生成

Kotlin 的标准库当中有关数值类型的声明,例如 Byte、Short、Int、Long、Double、 Float。这些类的函数都没有实现,因为它们在编译时会被编译器映射到对应平台的实际类型。 这些类型的声明高度相似,非常适合编写程序直接生成。

代码生成方式

  1. 直接用程序输出代码
  2. 使用模板引擎渲染
  3. 使用代码生成框架生成目标程序

直接输出代码的方式在大多数场景下开发效率较低。使用模板引擎渲染的方式虽然在开发效率上有所提升,但也受限于模板本身,灵活性不够,想要扩展样式就要增加模板;同时,模板本身是中立的,缺乏对生成的目标程序的针对性支持,我们需要额外处理对目标程序自身的优化。

本章通过 KotlinTuple、Anko、扩展函数生成等案例介绍了几种常见的代码生成方式, 包括字符串直接输出、模板引擎渲染、JavaPoet/KotlinPoet 生成等。这几种方式各有优劣, 其中 JavaPoet/KotlinPoet 生成的方案是应用最为广泛的。


最后更新: November 17, 2024