$30 off During Our Annual Pro Sale. View Details »

This Week On Code Hoarders: Declutter Your Codebase With Aspect Oriented Programming

This Week On Code Hoarders: Declutter Your Codebase With Aspect Oriented Programming

How many lines of code in your methods actually contribute to what that method is supposed to do? The clutter of logging, security checks, exception handling, implementing INotifyPropertyChanged and much more can be purged from your methods with Aspect Oriented Programming (AOP) techniques. In this session we will clean up an application to make it more readable, better organized and easier to maintain by using AOP tools to organize the common functionality. What are you waiting for? Come to this session and get that cruft out of your codebase.

Joe Kuemerle

March 19, 2012
Tweet

More Decks by Joe Kuemerle

Other Decks in Programming

Transcript

  1. @jkuemerle / www.kuemerle.com
    This Week On Code Hoarders:
    Declutter Your Codebase With Aspect
    Oriented Programming
    Joe Kuemerle
    www.kuemerle.com
    @jkuemerle

    View Slide

  2. @jkuemerle / www.kuemerle.com
    Joe Kuemerle
    • Developer at BookingBuilder Technologies
    • Over 15 years of development experience with a
    broad range of technologies
    • Focused on application and data security, coding
    best practices and regulatory compliance
    • Presenter at community, regional and national
    events.

    View Slide

  3. @jkuemerle / www.kuemerle.com

    View Slide

  4. @jkuemerle / www.kuemerle.com

    View Slide

  5. @jkuemerle / www.kuemerle.com

    View Slide

  6. @jkuemerle / www.kuemerle.com

    View Slide

  7. @jkuemerle / www.kuemerle.com

    View Slide

  8. @jkuemerle / www.kuemerle.com

    View Slide

  9. @jkuemerle / www.kuemerle.com

    View Slide

  10. @jkuemerle / www.kuemerle.com

    View Slide

  11. @jkuemerle / www.kuemerle.com

    View Slide

  12. @jkuemerle / www.kuemerle.com

    View Slide

  13. @jkuemerle / www.kuemerle.com
    AOP Terminology

    View Slide

  14. @jkuemerle / www.kuemerle.com
    AOP Terminology
    • Cross-Cutting Concern: required but non core
    functionality
    • Advice: the implementation of specific
    functionality, contained in a module
    • Join Point: a location to execute an aspect
    • Pointcut: a set of join points that defines when and
    where to apply aspects
    • Aspect: when, where and what to apply in order to
    accomplish AOP. The combination of the pointcut
    and advice.

    View Slide

  15. @jkuemerle / www.kuemerle.com
    What can you do with
    AOP?

    View Slide

  16. @jkuemerle / www.kuemerle.com
    • Threading
    • Transactions
    • Undo
    • Compile Time
    Validation
    • Architecture Validation
    • Logging
    • Tracing
    • Security
    • Caching
    • Exception Handling
    • Functionality Injection
    o Dirty flags
    o INotifyPropertyChanged
    o Parameter validation
    What can you do with
    AOP?

    View Slide

  17. @jkuemerle / www.kuemerle.com
    Tools
    http://code.google.com/p/linfu
    http://www.sharpcrafters.com
    http://sheepaspect.codeplex.com
    http://www1.cs.columbia.edu/~eaddy/wicca
    http://loom.codeplex.com
    http://www.simpleaspects.com

    View Slide

  18. @jkuemerle / www.kuemerle.com
    https://bitbucket.org/jkuemerle/aop

    View Slide

  19. @jkuemerle / www.kuemerle.com

    View Slide

  20. @jkuemerle / www.kuemerle.com
    References
    • https://bitbucket.org/jkuemerle/aop
    • http://wpfpasswordgenerator.codeplex.com
    • http://crosscuttingconcerns.com
    • http://www.sharpcrafters.com/blog
    • http://ruskin-
    dantra.blogspot.com/2009/03/inotifypropertychang
    ed-made-easier.html
    • http://www.developerfusion.com/article/137636/ta
    king-the-single-responsibility-principle-seriously
    • http://www.ibm.com/developerworks/rational/libra
    ry/mar06/pollice/index.html

    View Slide

  21. @jkuemerle / www.kuemerle.com
    Photo Credits
    • http://www.flickr.com/photos/andidigress/4471100232
    • http://www.flickr.com/photos/earthworm/5002718047
    • http://www.flickr.com/photos/profzucker/5845911299
    • http://www.flickr.com/photos/29051800@N03/2713792371
    • http://www.flickr.com/photos/7891209@N04/2951368555
    • http://www.flickr.com/photos/f-oxymoron/5005673112
    • http://www.flickr.com/photos/rscwm/6429923619

    View Slide

  22. @jkuemerle / www.kuemerle.com
    http://speakerrate.com/jkuemerle

    View Slide