TL;DR : Les paramètres nommés sont facultatifs en raison de l'utilisation de la fonction un choix de conception conscient . À défaut d'un support linguistique officiel, existe-t-il un moyen d'imposer (et d'informer) les arguments nommés requis ?
Je trouve extrêmement utile d'utiliser des paramètres nommés lors de la définition d'une classe. Prenez, par exemple, un Ability
dans un MMORPG :
class Ability {
final name;
final effectDuration;
final recast; // wait time until next use
// ...
}
effectDuration
y recast
Les deux portent le même type d'information (c'est-à-dire la durée du temps) et sont probablement représentés par le même type de données. Il est facile de confondre quel chiffre va où. Cependant, il s'agit de deux informations vitales pour l'exactitude de l'objet, elles ne peuvent donc pas manquer lors de l'instanciation.
Je pourrais simplement casser le programme via un try-catch pour faire respecter l'exigence de ces paramètres, mais cela ne semble pas amusant pour quelqu'un qui utilise la classe et qui n'a aucune idée (à part lire les docs et comprendre intuitivement ce que fait la classe) qu'ils sont requis.
Existe-t-il un moyen de faire respecter l'exigence de certains paramètres nommés tout en parvenant à informer l'appelant de cette exigence et/ou à l'aider à l'utiliser correctement ?