Currently, user names are passed as parameters to message handling
routines and used there to detemine the users gender and return
language texts varying with the gender.
Sometimes, user names are also used to be included verbatim in messages.
Sometimes, rather links such as [[User:$2|$2]] are used instead.
Sometimes, series of links such as "Username (contribs, block, log, ...) "
are used and passed as parameters to messages.
This pactice has drawbacks:
A: Localizers often cannot immediately identify a parameter as being a plain name suitable for GENDER use, or a link or series of links which cannot be used.
B: When parameters for a message are evaluated, often a user object is already there, then only a name is passed to message handling which has to evaluate its own user object from the name in order to determine the gender. That's a waste.
When messages need gender, pass the evaluated gender to them, and alter gender handlincg accordingly. We need an additional parameter per independent occurrence of gender per message, which can be seen as a structural advantage, and the above drawbacks are avoided.