Aspect Oriented Programming (AOP) 似乎是一个有趣的概念。起初我对它非常热情,但随着我阅读更多内容并看到人们描述的用例,我变得很失望。

我看到的许多站点,以及 AspectC++ 开发人员的演示文稿,都展示了我认为相当可疑的用例。

他们讨论了如何使用 AOP 进行错误处理(抛出异常)、对参数和返回值进行边界检查、在出现问题时返回安全的 null 对象、安全性等。这些只是不好的例子吗(而不是实际使用)案例),或者我错过了什么?

当你调用一个函数时,你应该如何知道发生了什么?几乎任何事情都可能发生,这取决于您决定应用哪些方面。难道这不会把事情搞得一团糟吗? API 文档怎么样,我应该怎么写?

到目前为止,我见过的 AOP 唯一好的用例是日志记录或分析之类的东西——这些东西不会影响实际的逻辑流,只用作调试工具。

除了调试机制之外,AOP 对其他任何东西都有用吗?

最佳答案

当您的关注点与应用程序的主要关注点(称为正交关注点)无关时,AOP 最有用。当您必须对现有代码添加关注点(比如为内部私有(private)使用而构建的东西的安全性)或必须添加功能时,它可能非常方便,无论出于何种原因,它都不适合您的域模型而不会真正掩盖您的商业逻辑。

我不会在任何你不得不想知道调用函数时发生了什么的地方使用它。这对我来说似乎是代码味道。

关于language-agnostic - 面向方面编程 (AOP) 如何影响代码质量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7573300/

10-12 22:09