À bien des égards, j’aime beaucoup l’idée des interfaces Fluent, mais avec toutes les fonctionnalités modernes du C # (initialiseurs, lambdas, paramètres nommés), je me dis: "est-ce que ça vaut la peine?" Et "Est-ce le bon modèle pour utilisation?". Est-ce que n'importe qui pourrait me donner, sinon une pratique acceptée, au moins leur propre expérience ou matrice de décision pour quand utiliser le modèle Fluent?
Conclusion:
Quelques bonnes règles empiriques tirées des réponses à ce jour:
- Les interfaces fluides aident beaucoup lorsque vous avez plus d'actions que de paramètres, car les appels bénéficient davantage de la transmission de contexte.
- Les interfaces fluides doivent être considérées comme une couche au-dessus d'une interface API, et non comme le seul moyen d'utilisation.
- Les fonctions modernes telles que les lambdas, les initialiseurs et les paramètres nommés peuvent fonctionner main dans la main pour rendre une interface fluide encore plus conviviale.
Voici un exemple de ce que je veux dire par les fonctionnalités modernes qui permettent de se sentir moins nécessaire. Prenons l'exemple d'une interface Fluent (peut-être médiocre) qui me permet de créer un employé tel que:
Employees.CreateNew().WithFirstName("Peter")
.WithLastName("Gibbons")
.WithManager()
.WithFirstName("Bill")
.WithLastName("Lumbergh")
.WithTitle("Manager")
.WithDepartment("Y2K");
Pourrait facilement être écrit avec des initialiseurs comme:
Employees.Add(new Employee()
{
FirstName = "Peter",
LastName = "Gibbons",
Manager = new Employee()
{
FirstName = "Bill",
LastName = "Lumbergh",
Title = "Manager",
Department = "Y2K"
}
});
J'aurais aussi pu utiliser des paramètres nommés dans les constructeurs de cet exemple.