Implicit Aspects and Explicit Aspects

AspectJ を使い始めていたころの疑問の一つは、アスペクトがアプリケーションのコードの側に現れてもいいのかどうかということ。(特に AspectJ における)ロギングのようなアスペクトは、暗黙なアスペクトとして実装されて、実際のコードのには、現れる必要がないかもしれない。オブジェクトとアスペクトとのインタラクションの関係はどーなんだろうか。Caesar では、アスペクトとクラス(オブジェクト)の明確な区別はない(少なくとも文法的な区別はない。Class 内に advice を書ける)。


実際に、アスペクトがアプリケーション側のコード(他になんか良い言い方ないかな? コンポーネントとかでいいんだっけ?)に現れるのが良い事かどうかに係わりなく、暗黙に適用される(されやすい or アプリケーション側でオブジェクトとの関係を持たない)アスペクトと明示的に適用されるアスペクトの区別はどーなんだろうか。このような区別は考えている concern との関係から見出せるのだろうか? もし区別があるとするなら、なぜだろう?


全体的に曖昧だけど・・・感じていることでした。