方面、宏、反射和其他细节 - 好的部分
我注意到“元编程”技巧(在 clojure 世界中,函数具有元数据,在 oo 世界中,我们有反射、AOP 等概念......)可以是解耦和扩展现有代码的功能,而无需对其进行编辑。这些技巧允许我们拦截、重定向和包装代码的功能部分,以便它可以以高度动态的方式进行扩展。
可怕的部分
然而,正如许多人声称的那样 - 过度使用宏会使代码难以理解。如果我们不仔细管理这些代理的创建,“黑板”软件架构模式(其中多个代理修改或编辑公共(public)资源)可能会很危险。最后,我想非正式地指出,C++ 和 Java 的长期流行至少部分是因为它们是“毫无意外”的语言 - 代码清晰、明确且程序化。**
问题:动态代码注入(inject)技术减少样板文件和解耦功能集的 promise 需要一种关于文档、类设计和软件工程的"new"思维方式?
我的问题
当我们开始将元编程方法与更传统的面向对象方法结合起来时,我们记录/部署普通代码、管理源代码包、集成库的方式是否需要不同或新技术?
例如,我们是否应该考虑使用元编程来替代其他更传统的 OO 编程技术?
元编程是否引入了一组通用的已知危险信号 - 我们如何避免它们?
使用方面、反射和其他动态软件技术的最佳用例是什么?
最佳答案
我发现 AOP 在软件项目中需要非常小心地使用,并且有明确的目的。我发现它对于一些样板流程(例如事务划分、安全性和日志记录)很有用,但很容易让自己陷入 AOP 的麻烦,并且它可能成为意外复杂性的主要来源。
关于java - 管理元编程(AOP/反射/宏)技术复杂性的实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686657/