Object-Oriented Refactoring vs. Aspect-Oriented Refactoring

オブジェクト指向リファクタリングと、アスペクト指向リファクタリングは、コンフリクト*1するか?


微妙にあるかもしれない、と思い中。オブジェクト指向な設計(or クラスの分け方とか)とアスペクト指向な設計もコンフリクトするかもしれない。


コンフリクトは、僕は、衝突するっていうか、どっちがいいのか判断するのが難しい、みたいなニュアンスで使用してるけど、微妙にひっかかるのが、オブジェクト指向の原則にアスペクト指向の技術が反発するような状況があるかもしれない、という感じ。具体的には分からない。


アスペクト指向について確かにいえることの一つは、アスペクト指向(or 少なくとも AspectJ)は、設計における選択肢を増やす、ということ。選択肢が増えるということは、それだけ適材適所みたいな雰囲気で、よりよい選択が可能になるという利点が生まれると思うけど、逆に、どの選択肢が良いのかの判断が難しくなる、という欠点があるようにも思える。


判断が難しくなることの理由の一つは、この場合は、経験不足から来ている(なぜなら、いままでアスペクト指向な解決策 or 選択肢を選んだ後の経験が少ないと思われるため)と思えて、したがって、その後のソフトウェアの発展(進化)についての予測が難しい、からに思える。


選択肢を、オブジェクト指向リファクタリングアスペクト指向なりファクタリングだと考えると、一時的には、アスペクト指向なりファクタリングが適切に思えても、その後、やっぱり、オブジェクト指向リファクタリングをしていればよかった、みたいな状況になるケースがありえるように思える。


疑問:

  • ある状況において、オブジェクト指向リファクタリングアスペクト指向なりファクタリングのどちらを行なえばいいのかどうかを迷うような状況はありえるか?
  • もしありえるなら、それはなぜか? 経験不足のためか?
  • もしありえるなら、その判断の決め手は何になるのか? 一時的な見方か? 長期的な見方か?


インスピレーション元:

Miguel Pessoa Monteiro and Jo縊 M. Fernandes
Object-to-Aspect Refactorings For Feature Extraction
3rd International Conference on Aspect-Oriented Software Development (AOSD 2004),

DL: http://www.di.uminho.pt/~jmf/PUBLI/publica.html


*1:かっこつけて英語なわけでなく、どう表現したらいいかわからんかったので英語