Every time I have looked into doing or learning about aspect-oriented programming, I’d be drowned in an obfuscated sea of specialty vocabulary (aspects, advice, pointcuts) and reflective black magic. It would turn me off. I always prefer to learn things the hard way. That way, you truly understand what is happening under the hood.
This isn’t to say that I haven’t understood AOP. I get it: there are certain cross-cutting concerns, the most typical example being logging, and objects throughout your system are often polluted with calls to a logger in addition to performing their normal function. This is rightly said to violate the Single Responsibility Principle. And any friend of the SRP is a friend of me.
So the idea is to extract these calls into an “aspect” and let the other objects focus on their work. See, the idea is not foreign, but its execution was because there are no examples anywhere that don’t involve reflective meta-magic. I want to know the basics!