遅い→起動時

http://d.hatena.ne.jp/pmint/

アスペクト指向

別にアスペクト指向言語を使わなくてもできるアスペクト指向
オブジェクト指向オブジェクト指向言語が必要でないのと同じように。


ログ出力に便利。…としか思われてなさそう。
実装の一例というだけなのに。
オブジェクト指向は構造体に関数ポインターを持たせたもの」とかいう覚え方をして、Mainクラスから他のオブジェクトを呼び出しているだけなのに「これがオブジェクト指向だ」みたいな勘違いをしちゃうのと同じパターン。


似たような間違いに「他人が作ったクラスを変更せずに改良できる」というものも。
手を加えられないクラスは継承で改良できると言うようなもの。




ログ出力に便利…それってつまり「複数の処理から呼ばれる副処理」を定義するのに便利ということでは。
例えばログイン処理とか。

そのほかでは、膨大なテストコードや入力チェック(Validate)のコードを呼び出すのにも。
あと「フォーム検索フォーム」の検索対象を決めるのにも。


「それってただの処理呼び出しでは?」となるだろうけど、そうだと思う。
ただし「呼び出し」はしない。これは呼び出さなくても呼ばれる処理。呼ばれる側だけを定義する。*1
フレームワークをアプリケーションのコードで拡張するみたいなもの。


アスペクト指向は手続き中心で「ここで…をして、次に…をして」という「肥満児アンチパターン」を生みやすい考え方ではなく、
定義中心の「これは…の場合に行なう処理。これは…の場合。」といった個々を取り上げる考え方。
的確に定義すれば、的確なタイミングで呼び出される。

*1:実際は呼び出しの代わりに呼び出す側のメソッド名を特定の文字で始めるとか、特定のアノテーションを付けるとかしないと実装できないけど。