3

面向方面的编程(AOP) 似乎是一个有趣的概念。起初我对它非常热情,但当我阅读更多并看到人们描述的用例时,我变得失望了。

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

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

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

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

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

4

1 回答 1

4

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

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

于 2011-09-27T17:43:31.503 回答