Friday, February 17, 2006

AOP Myths and Realities

IBM DeveloperWorks has published a nice article by Ramnivas Laddad that deals with some typical arguments against aspect-oriented programming that are raised over and over again. Some of them have already become a matter of common knowledge urban legends that just cannot be discussed away, however convincing the counter-arguments may be.

In detail, the myths are as follows:
  1. AOP is good only for tracing and logging,
  2. AOP doesn't solve any new problems,
  3. Well-designed interfaces obviate AOP,
  4. Design patterns obviate AOP,
  5. Dynamic proxies obviate AOP,
  6. Application frameworks obviate AOP,
  7. Annotations obviate AOP,
  8. Aspects obscure program flow,
  9. Debugging with aspects is hard,
  10. Aspects can break as classes evolve
  11. Aspects can't be unit tested,
  12. AOP implementations don't require a new language,
  13. AOP is just too complex,
  14. AOP promotes sloppy design,
  15. AOP adoption is all or nothing.
That is a pretty impressive list, and it comprises all the themes that occur in variations in most of the discussions on AOP. Laddad deals with each of the topics cautiously, without being polemic, and generally delivers a very objective discussion. Some of the fifteen points are actually correct, albeit not in the way people that use them as arguments against AOP understand them.

Everybody dealing with AOP should read this article, regardless of being in favour or a critic of AOP.

I doubt that mantric repetitions of unreflected prejudice will ever cease, though.

No comments:

Post a Comment