Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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

share|improve this question

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

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

Plenty of learning materials out there already. Intro to AOP -…. Learn PostSharp (AOP framework) - – DustinDavis Jan 25 '12 at 15:40

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.

share|improve this answer

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
share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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