En muchos aspectos, me gusta mucho la idea de las interfaces Fluent, pero con todas las características modernas de C # (inicializadores, lambdas, parámetros con nombre) me encuentro pensando: "¿vale la pena?", y "¿Es este el patrón correcto para usar? ". ¿Alguien podría darme, si no es una práctica aceptada, al menos su propia experiencia o matriz de decisiones sobre cuándo usar el patrón Fluent?
Conclusion:
Algunas buenas reglas de oro de las respuestas hasta el momento:
- Las interfaces fluidas son de gran ayuda cuando se tienen más acciones que configuradores, ya que las llamadas se benefician más del traspaso de contexto.
- Las interfaces fluidas deben considerarse como una capa sobre la parte superior de una API, no como el único medio de uso.
- Las características modernas, como lambdas, inicializadores y parámetros con nombre, pueden funcionar mano a mano para hacer que una interfaz fluida sea aún más amigable.
Este es un ejemplo de lo que quiero decir con las características modernas que lo hacen sentir menos necesario. Tomemos, por ejemplo, una interfaz fluida (quizás pobre) que me permite crear un empleado como:
Employees.CreateNew().WithFirstName("Peter")
.WithLastName("Gibbons")
.WithManager()
.WithFirstName("Bill")
.WithLastName("Lumbergh")
.WithTitle("Manager")
.WithDepartment("Y2K");
Se podría escribir fácilmente con inicializadores como:
Employees.Add(new Employee()
{
FirstName = "Peter",
LastName = "Gibbons",
Manager = new Employee()
{
FirstName = "Bill",
LastName = "Lumbergh",
Title = "Manager",
Department = "Y2K"
}
});
También podría haber usado parámetros nombrados en los constructores en este ejemplo.