Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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:

Advantages:

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

Disadvantage:

  • 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
    
Plenty of learning materials out there already. Intro to AOP - dotnetslackers.com/articles/net/…. Learn PostSharp (AOP framework) - programmersunlimited.wordpress.com/postsharp-principals –  DustinDavis Jan 25 '12 at 15:40

3 Answers 3

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

Disadvantages

  • 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

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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