Hace poco vi un webcast sobre how to create a fluent DSL y tengo que admitir que no entiendo las razones por las cuales se usaría dicho enfoque (al menos para el ejemplo dado).¿Cuál es el punto de las DSL/interfaces fluidas?
La transmisión por Internet presenta una imagen de cambio de tamaño de clase, que le permite especificar una imagen de entrada, cambia su tamaño y guardarlo en un archivo de salida utilizando la siguiente sintaxis (usando C#):
Sizer sizer = new Sizer();
sizer.FromImage(inputImage)
.ToLocation(outputImage)
.ReduceByPercent(50)
.OutputImageFormat(ImageFormat.Jpeg)
.Save();
Pongo 't entender cómo esto es mejor que un método 'convencional' que tiene algunos parámetros:
sizer.ResizeImage(inputImage, outputImage, 0.5, ImageFormat.Jpeg);
desde el punto de vista de la facilidad de uso, esto parece mucho más fácil de usar, ya que claramente le dice lo que el método espera como entrada. Por el contrario, con la interfaz fluida, nada le impide omitiendo/olvidar un parámetro/método de llamada, por ejemplo:
sizer.ToLocation(outputImage).Save();
Así que a mis preguntas:
1 - ¿Hay alguna manera para mejorar la usabilidad de una interfaz fluida (es decir, decirle al usuario lo que se espera que haga)?
2 - ¿Este enfoque de interfaz fluida es solo un reemplazo de los parámetros del método nombrado no existente en C#? ¿Los parámetros nombrados dejarán obsoletas las interfaces fluidas, p. Algo similar ofertas de Objective-C:
sizer.Resize(from:input, to:output, resizeBy:0.5, ..)
3 - son interfaces fluidas sobre-utilizados simplemente porque son populares en la actualidad?
4 - ¿O fue solo un mal ejemplo el elegido para la transmisión por Internet? En ese caso, dígame cuáles son las ventajas de tal enfoque, dónde tiene sentido usarlo.
BTW: Sé lo fácil que es hacer jquery, así que no estoy buscando comentarios sobre ese u otros ejemplos existentes.
Estoy más buscando algunos comentarios (generales) que me ayuden a comprender (por ejemplo) cuándo implementar una interfaz fluida (en lugar de una biblioteca de clases clásica) y qué tener en cuenta al implementar una.
Pregunta interesante –
+1 También creo que actualmente están sobreactuadas. –