AOPの使いどころ

そう言えば先日の MD3 で,萩原さんから「AOP を不具合修正 (パッチあて) に使うのは良くない」というような話があったような.確かに紙一重な部分はあるかもなぁ.〜
AOP とパッチあて - NyaRuRuの日記

これに関して、非常に共感する。

AOPに関して、その黎明期には「横断的関心事などとは言うけれどこれは一体何に適用するのがいいんだろう」と思ったものだ。蓋を開けてみると、それほど奇抜な使いどころは無く、現状だと従来からあるプロキシパターンやデコレータパターン、プラグイン等の実装を、通常よりスマートに実現する、というあたりに収まっているケースが多いと思われる。(これからもあっと驚くアィディアが出るのかもしれないし、そうあって欲しいな)
これとは別に、アドホック(ad hoc)な修正を次々と挿し込んでいく、文字通りの「パッチ」を当てて行く用途にもAOPを、ということもよく言われてきたものだが、こちらは実際にやってみれば解るが大抵は上手くいかない。重なり合ったAspectが簡単に人知を超えてしまうことも問題なのだが、そもそも不具合の修正箇所は必ずしもAOPの適用箇所とは限らないからだ。いや、その殆どは横断的関心事では無く、その修正をしようとしている人間に都合よく、そのように見えているだけだ。

安直なAOPの適用によるパッチは、従来からある悪しき修正方法を増強するだけだろう。