Ok so here is the question: What are the advantages and Disadvantages of Using an Aspect Orientated Programming Paradigm.

My advantages and disadvantages thus far:


  • Complements object orientation.
  • Modularizes cross-cutting concerns improving code maintainability and understandability.


  • Not the easiest of concepts to grasp - not as well documented as O-O
  • O-O goes far enough in the separation of concerns...

Would anyone like to challenge any of these/ add their own?

Many Thanks, J

closed as too broad by Martijn Pieters, user40980, gnat, Bart van Ingen Schenau, ChrisF Sep 8 '14 at 10:09

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.


From the point of view of a programmer who's motto is "Keep It Simple Stupid", evaluating the usage of such models is dangerous. For what it attempts to accomplish, it renders a program far more difficult to comprehend and consequently easier to break.

The genius of good programming is in its simplicity ironically. Complex programs might work, but are nightmares when it comes to maintenance, and when you consider that 2/3rds of time spent by a programmer is placed in fixing errors in programs, it doesn't pay off in the end.


Distributing functionality out from the locus of operation increases complexity and action-at-a-distance issues.

I consider such design approaches to be something one should evolve into because the system demands it for clean operation, not designed in at the start.


Additional Advantages (not all of them)

  • Reuse of classes and aspects, thanks to modularity
  • Reduced cost of coding thanks to modularity and reuse
  • Shorter code thanks to the ability to have an aspect with the code that would otherwise be implemented (scattered) into several classes
  • Ability to add behavior to a class without introducing in it code unrelated with its main responsibility
  • Ability to redefine the semantic of methods/classes without letting client classes know about it


  • Runtime overhead when using some constructs, e.g. cflow

Disadvantage: Poor tool-chain support:- debugger and profiler may not know about the "Aspect Oriented Programming" because of this reason they may work on code as if all the aspects had been replaced by procedural code.

Not the answer you're looking for? Browse other questions tagged or ask your own question.