Cómo entender la metaprogramación
1. Si un lenguaje no puede hacer algo originalmente, puedes modificarlo mediante programación para que pueda hacerlo. Esto es metaprogramación.
2. Es utilizar código para generar (manipular) código.
3. Todos los lenguajes de desarrollo comunes pueden realizar metaprogramación, Lisp, C's Marco, C's Template, Java's Annotation, C#'s Attribute, Reflection, CodeDom e IL Emitter y eval de varios scripts. Se pueden utilizar lenguajes (como js, python) e incluso scripts de shell Unix/Linux.
4. Existen muchos escenarios de aplicación comunes para la metaprogramación, incluida la extensión (reconstrucción) de la gramática, el desarrollo de DSL, la generación de código, la selección automática de la optimización del código de acuerdo con escenarios específicos, la resolución de algunos problemas de diseño arquitectónico ortogonal, AOP, etc. .
5. Por lo tanto, el propósito de la metaprogramación es proporcionar un nivel adicional de abstracción.
6. En cuanto a las ventajas y desventajas de la metaprogramación, la controversia sigue siendo relativamente grande. Por ejemplo, tomemos la aplicación de la gramática de refactorización. Muchos oponentes de la metaprogramación creen que esto reducirá la legibilidad y la capacidad de mantenimiento del código, dividirá a la comunidad y afectará la comunicación, porque cada desarrollador puede desarrollar su propio dialecto.
En general, si eres bueno en metaprogramación, tu vida será más fácil, pero si no eres bueno en eso, tu vida será más difícil.