Question: Looking through the source code of a 90s Doom source port (Retrodoom in this case), I found this:

```
void A_Detonate(mobj_t *actor, player_t *player, pspdef_t *psp)
{
    P_RadiusAttack(actor, actor->target, actor->info->damage, false);
}

```

This A\_Detonate function only serves as a caller to the P\_RadiusAttack function, so the question is: why not just use P\_RadiusAttack without a "parent" function?

Answer: 
Functions are sometimes used to increase the readability for developers, it may be doing something in a slightly slower way, but it makes the code a lot easier to maintain.

The function P\_RadiusAttack may be used by multiple other functions, imagine a place in the code which calls 10 different "actions" aside from detonate, and they all call P\_RadiusAttack in a different way. It would be a lot more readable and a lot easier to maintain to have functions of the names of the actions than to have 10 calls to P\_RadiusAttack in slightly different ways.

Those functions may do more than calling P\_RadiusAttack, or they may call it with different parameters, this way, the code would be quite unstructured if you only change A\_Detonate.

Also, the function is actually already doing something, as you can see, the parameters for the 2 functions are different, in fact, putting the right parameters in the right place is already something which the function did.
Judging by arguments, it's a handler. A\_Detonate isn't even using its player object and psp. Existence of such function suggests that somewhere is code that works with such signature, either for unification purposes, as adapter or as a handler.