Re: Inheritance hierarchies
Nathan McEachen <[email protected]> Thu, 19 Apr 2007 11:23:07 -0600
| Newsgroups | gmane.comp.programming.aspect.general |
|---|---|
| Message-ID | <[email protected]> |
Dean Wampler wrote: > > +1. That's why I think most aspects should only add orthogonal state > and behavior to the modules they advise. Otherwise, you have a non- > trivial problem of reasoning about the behavior. (Even then, such > aspects can impact performance and other systemic properties.) Non- > orthogonal aspects should be used deliberately and with caution, at > least given the current state of our art. > > Agreed! > Coming from industry, the vast majority of developers simply won't > use aspects if they have to do some sort of global analysis to ensure > correct behavior. Very few organizations do anything like that today. > It would be too big a barrier. Fortunately, the problem is diminished > by using mostly orthogonal aspects. Also, rigorous automated testing, > which is already a best practice that emerged in the last decade, > will help detect many problems. > > dean I am working on a project using AspectJ and I am the only developer familiar with aspects. I also have tried to write aspects that add only orthogonal state and behavior. Otherwise, I feel the complexity increases dramatically. The other developers understand AOP only in concept. They understand that the weaver introduces additional code into their classes, but are not familiar enough with AspectJ to look at my pointcuts and advice to understand the behavior that my aspects implement. Consequently, when unit testing exposes a bug in one of their classes, they are quick to assume that my "rouge" and "intrusive" aspects may be the culprit. Even though 99% of the time my aspects were not responsible for such bugs, aspects continue to be the number 1 suspect. -Nathan _______________________________________________ discuss mailing list - [email protected] To unsubscribe and change options, go to: http://aosd.net/mailman/listinfo/discuss_aosd.net Check out the AOSD.net Wiki: http://aosd.net/wiki