If the @Named annotation was deprecated, and the $variable patterns were matched to the steps argument list instead, jBehave would be much more usable.
The @Named parameter annotations are in essence redundant, and they limit usability of jBehave for two reasons:
1. The parameter names could be parsed directly from the step scenario instead. And I wish they were: I (and my testers) have frequently run into the problem of the arguments being in the wrong order. An innocent looking step like
can lead to great confusion, with the arguments getting switched. Using the step in an example scenario can increase the confusion, as one can legally write:
Testers and developers alike are also confused that, while Given a book Moby Dick written by Herman Melville works, Given [title] written by [person] doesn't (see next point).
2. they inhibit reusing steps in example scenarios; either that, or they lead to redundant columns.
An example to illustrate this: given
I cannot reuse this step for two colums in an example: