C# Language Les arguments nommés évitent les bogues sur les paramètres facultatifs


Exemple

Toujours utiliser les arguments nommés pour les paramètres facultatifs, afin d'éviter les bogues potentiels lorsque la méthode est modifiée.

class Employee
{
    public string Name { get; private set; }

    public string Title { get; set; }

    public Employee(string name = "<No Name>", string title = "<No Title>")
    {
        this.Name = name;
        this.Title = title;
    }
}

var jack = new Employee("Jack", "Associate");   //bad practice in this line

Le code ci-dessus compile et fonctionne correctement, jusqu'à ce que le constructeur soit modifié un jour comme:

//Evil Code: add optional parameters between existing optional parameters
public Employee(string name = "<No Name>", string department = "intern", string title = "<No Title>")
{
    this.Name = name;
    this.Department = department;
    this.Title = title;
}

//the below code still compiles, but now "Associate" is an argument of "department"
var jack = new Employee("Jack", "Associate");

Meilleure pratique pour éviter les bugs lorsque "quelqu'un d'autre dans l'équipe" a commis des erreurs:

var jack = new Employee(name: "Jack", title: "Associate");