3

アスペクト指向プログラミング(AOP)は興味深い概念のようです。最初はかなり熱心でしたが、もっと読んで、人々が説明しているユースケースを見ると、がっかりしました。

私が見た多くのサイトに加えて、AspectC ++の開発者からのプレゼンテーションでは、かなり疑わしいと感じたユースケースが提示されました。

彼らは、AOPを使用してエラー処理(例外のスロー)を実行したり、パラメーターと戻り値の境界チェックを実行したり、問題が発生した場合に安全なnullオブジェクトを返したり、セキュリティなどを実行したりする方法について話しました。これらは単なる悪い例です(実際の使用ではありません)。ケース)、または私は何かが欠けていますか?

関数を呼び出すときに何が起こっているかをどのように認識する必要がありますか?適用することを決定した側面に応じて、事実上何でも起こり得ます。それは本当にひどく物事を台無しにするつもりではありませんか?APIドキュメントはどうですか、どのように書くのですか?

これまでのところ、私が見たAOPの唯一の良いユースケースは、ロギングやプロファイリングなどです。実際のロジックフローに影響を与えず、デバッグツールとしてのみ機能するものです。

AOPはデバッグメカニズム以外の用途に役立ちますか?

4

1 に答える 1

4

AOP は、アプリケーションの主な関心事 (直交する関心事と呼ばれます) に関連しない懸念がある場合に最も役立ちます。既存のコードに懸念事項を追加する必要がある場合 (たとえば、内部の私的使用のために構築されたものにセキュリティを追加する必要がある場合)、または何らかの理由でドメイン モデルに適合しない機能を追加する必要がある場合に、ドメイン モデルを実際に覆い隠す必要がある場合に非常に便利です。ビジネスの論理。

関数を呼び出すときに何が起こっているのか疑問に思う必要がある場所では使用しません。それは私にはコードの匂いのようです。

于 2011-09-27T17:43:31.503 に答える