源代码生成
本文为《深入实践 kotlin 元编程》读书笔记,想要深入了解 kotlin 元编程的同学可以阅读原书。
解决重复或者相似的代码逻辑最直接的方案就是提取其中的共性,编写程序生成这些代码, 这实际上是编译阶段最简单的元编程形式。
标准库的代码生成
Kotlin 的标准库当中有关数值类型的声明,例如 Byte、Short、Int、Long、Double、 Float。这些类的函数都没有实现,因为它们在编译时会被编译器映射到对应平台的实际类型。 这些类型的声明高度相似,非常适合编写程序直接生成。
代码生成方式
- 直接用程序输出代码
- 使用模板引擎渲染
- 使用代码生成框架生成目标程序
直接输出代码的方式在大多数场景下开发效率较低。使用模板引擎渲染的方式虽然在开发效率上有所提升,但也受限于模板本身,灵活性不够,想要扩展样式就要增加模板;同时,模板本身是中立的,缺乏对生成的目标程序的针对性支持,我们需要额外处理对目标程序自身的优化。
本章通过 KotlinTuple、Anko、扩展函数生成等案例介绍了几种常见的代码生成方式, 包括字符串直接输出、模板引擎渲染、JavaPoet/KotlinPoet 生成等。这几种方式各有优劣, 其中 JavaPoet/KotlinPoet 生成的方案是应用最为广泛的。
最后更新:
November 17, 2024