[aspectc-user] Element counter example -- getting compile error
Daniel Lohmann
daniel.lohmann at informatik.uni-erlangen.de
Fri May 28 12:18:23 CEST 2004
Hi Siva,
>During the test, I have found an error in the tutorial:
>
>In the ErrorAspect.ah file, you have the following line:
>
>advice execution("% Queue::dequeue(...)") && result(item)
>...
>But dequeue has no arguments! So I think it should be:
>
>advice execution("% Queue::dequeue()") && result(item)
>...
>
>
>
This is actually not an error, as the ellipsis ("...") matches for any
number of arguments (which includes no arguments). Of course, one can
argue if this is good style. The idea here is to make the pointcut
robust against changes in the signature of dequeue. As a result, the
aspect will still work as expected if (e.g. during maintaince) some
parameters are added to dequeue.
>Instead testing the item after the execution, another idea is to test the
>variable 'first' to see it that is 0. Here is the advice for that:
>
>advice execution("% Queue::dequeue()") && that(q):
> before(Queue* q) {
> if (q->first == 0) {
> throw QueueEmptyError();
> }
> }
>
>
>
Of course it is also possible to do it this way. However, this way your
aspect implementation is higly dependent on the internals of class Queue
and its implementation. So the argument for the original solution is,
once again, robustness. By testing the item after the execution, it
depends only on the specification, but not on implementation internals
of class Queue.
Regards
Daniel
More information about the aspectc-user
mailing list