Autor: elGuille

  • Fluent Interface no es solo simular el WITH de VB

    Pues eso, que a raíz de leer un artículo en el blog de mi amigüita Gisela Torres (amiga de feisbúc, ya que no la conozco personalmente aunque en la última cena/reunión de MVP anduvo por allí cerca, pero como yo estaba castigado contra la pared no le vi ni sus ojos… ya sabes que algunos ojos me encandilan, jeje) comentando cómo Crear Fluent Interface en C# y en uno de los comentarios al post decían que se parecía mucho al uso de la instrucción (o bloque) WITH de Visual Basic.

    Después en la página que tiene CampusMVP en feisbúc se vuelve a comentar lo mismo, y en realidad es que ese ejemplo concreto es muy parecido al uso de un bloque With de VB (ya sea VB para .NET como el VB6, en ambos existe esa construcción).

     

    El código de ejemplo

    Sin entrar en demasiados detalles (y con el permiso de Gisela) te muestro el código de uso en C# del ejemplo de interfaz fluida (o fluent interface si lo prefieres en inglés –estos dos enlaces o links son de la wikipedia y en el de español sólo hay ejemplos para C# y C++, mientras que en inglés hay ejemplos para Object Pascal, PHP, Java, JavaScript, C#, etc., eso sí, para VB no hay… ¡faltaría más!-) que puso en su artículo, y después te muestro el correspondiente en Visual Basic usando un bloque With.

     

    Nota:
    Para entender mejor este ejemplo, te recomiendo que veas el código completo que muestra Gisela en su artículo.

     

    El código de uso de Fluent Interface en C#:

    new Computer()
        .AddProcessor("Intel i7 920")
        .AddRAM(6)
        .TurnOn()
        .Test()
        .TurnOff();

     

    El código de uso de Fluent Interface en VB

    (pero sin crear la interfaz que implementa la clase Computer de C#, por eso en este ejemplo la clase se llama ComputerSimple):

    With New ComputerSimple()
        .AddProcessor("Intel i7 920")
        .AddRAM(6)
        .TurnOn()
        .Test()
        .TurnOff()
    End With

     

    Como puedes comprobar, escribiendo el código de C# de esa forma es fácil confundirlo con una construcción (o bloque) With de Visual Basic, pero como comenté en la página de CampusMVP: sin End With y con punto y coma… 😉

     

    Aunque ese "parecido" con With es sólo por la forma de escribir ese código en C#, ya que si lo escribiésemos todo junto y sin cambios de líneas, sería lo que se conoce como encadenamiento de métodos, de forma que se puede llamar a un método de una clase partiendo de la llamada a otro método y esto no se puede hacer con un With, ya que esa instrucción lo que permite es hacer llamadas a diferentes miembros de un objeto (ya sean métodos, propiedades o cualquier cosa que se pueda usar en un objeto) sin necesidad de tener que indicar el objeto en cuestión, es decir, el With nos permite crear un bloque que hace referencia a un objeto, y al estar dentro del "bloque" podemos acceder a cualquier miembro de ese objeto.

     

    El código de llamada a la clase "Computer" que simula un With en C# en realidad se podría escribir así:

    Nota:

    En el blog es posible que se corte el código, pero lo que hay después del comentario podría/debería estar en una sola línea.

    Gracias a mi amigo Dani (Seara) por recordarme que no había puesto el código.

     

    // Todo en una línea:
    new Computer().AddProcessor("Intel i7 920").AddRAM(6).TurnOn().Test().TurnOff();

     

    Por tanto, si queremos una funcionalidad como la indicada en los ejemplos de encadenamientos de métodos, tendríamos que crear un código parecido al indicado en el artículo de Gisela, es decir, crear una interfaz en los que sus métodos devuelvan la propia interfaz en lugar de un tipo más concreto.

     

     

    Fluent Interface no solo es encadenamiento de métodos

    Pero si hacemos caso a Martin Fowler, a esta forma de usar Fluent Interface se conoce como method chaining (o encadenamientos de métodos), pero la "fluidez" no es sólo porque se puedan encadenar métodos… aunque yo aquí no te voy a contar lo que él ya te cuenta en su sitio, allí podrás leer más sobre nested functions (anidamiento de funciones) o de object scoping (alcance -cobertura- de los objetos) que son otras de las "gracias" de todo esto de las interfaces fluidas (fluent interface).

     

    Reflexiones

    En cualquier caso, todo esto está muy bien… y el que quiera usarlo que lo use y el que no, que haga como yo, que se va a dar una vuelta por la playa (o equivalente, también vale un parque o un banco en una esquina) o suda un poquillo corriendo o jugando al tenis… jejeje, que no, que es broma, es que después de un año casi sabático, tantas cosas nuevas, que no son tan nuevas, pero que ahora es cuando yo me estoy enterando de muchas de ellas, porque se usan en los lenguajes que me interesan: en general todos los incluidos en .NET Framework… la cuestión es que hay mucha información en poco tiempo y la verdad es que prefiero "emplear" sólo una parte de ese tiempo en cosas concretas o bien que me llamen la atención como ha sido la de este artículo de Gisela. ¡Gracias Gisela por hacer que le dedique un rato a esto de la programación en vez de estar pensando que podría estar en la playa refrescándome! (de todas formas esta tarde no tocaba playa, así que… bien empleado está el tiempo, jejeje)

     

    Despedida y cierre

    Bueno, voy a escribir el código de ejemplo y ponerlo más arriba, que sólo he dejado el espacio para que no se me fuera la idea, que con estas calores, hasta las ideas se evaporan… jejeje

     

    Nos vemos.

    Guillermo

    P.S.

    El código de ejemplo completo lo pondré en otro momento… ¿vale? pues eso… y además añadiré el correspondiente para usar esto mismo en Visual Basic .NET y si me da el punto -y se puede- también lo haré para Visual Basic 6.0

    P.S.2 (23/Jul/2010 05.27)

    Ya está el código de ejemplo para que lo puedas descargar desde mi sitio:

    .NET/VB6: Código de ejemplo de cómo usar Fluent Interface en C#, Visual Basic .NET y Visual Basic 6.0

  • Martes 20, vuelta a la rutina

    O eso espero… que si no, con tantas calores, se apalanca uno y no hace ná de ná.

    Al menos la mañana ha empezado con la correría matutina, a la que hemos ido los tres habituales (habituales de la última temporada, no de la anterior), es decir: Mari Ángeles, Vicky y yo, con el extra añadido de Dandy, aunque hoy también ha venido Charly, un amigo de Vicky y otro can que ha hecho compañía al Dandy (no recuerdo el nombre, pero es una perra pastor alemán que tiene Vicky desde hace ya más de 10 años… creo)

    Dandy iba con correa y no se si es por la correa o porque le daba miedo el otro perro, pero casi no quería ni moverse, si no… compruébalo en la foto 1, en la que se ve al perro completamente pegado al suelo.

    Después se animó y ya empezó a despegarse del suelo, por suerte estaba Charly allí y él se encargó de los perros, de esa forma pudimos ir todo el tiempo "al trote", que ya hacía falta retomar las buenas costumbres.

     

    Foto2796_lr
    Foto 1. Dandy no quería dar ni un paso (08.02)

    Foto2798_lr
    Foto 2. Después se animó y dejó de dar brillo al suelo

     

    Foto2799_lr
    Foto 3. El Balcón de Europa (08.04)

     

    Foto2802_lr
    Foto 4. El agua estaba como un plato… (08.20)

     

    El recorrido lo hicimos (más o menos) en 33 minutos, pero a la vuelta acabamos en la Torrecilla, concretamente en la playa, ya que la idea es darse un baño al acabar el recorrido.

    Al principio el agua estaba fresquita, pero una vez que estás dentro, se agradece, sobre todo porque estaba clara, clara, pero clara… Mari Ángeles se percató de que había un pulpo chiquitillo en la misma orilla (no fuera del agua, sino dentro del agua, como estaba transparente el agua, se podía ver perfectamente), y estaba vivito y coleando… lo dejamos por allí, a ver si el pobre no se encontraba con nadie que quisiera prepararse unas tapas con él…

    Y después del baño, vuelta a casita… y después de desayunar a hacer unas gestiones "en el exterior" con calores incluidos… y esta tarde, seguramente habrá piscina y después… tenis… pero eso será después… ya te contaré…

     

    Aquí estoy ya pa contarte (aunque sea al día siguiente o incluso casi dos días después, ya que ahora son las 05.17 del 22 de julio de 2010).

     

    A eso de las 6 de la tarde me fui a casa de Mari Ángeles a tomarme un té con ella y Ángel y probar las galletas que le traje de Oliva (típicas de allí).
    Después nos fuimos a la casa de la madre a darnos un remojo en la piscina, allí estuvimos un rato, hasta que Ángel tuvo que irse para las clases de tenis (es decir, un poco antes de las 7 de la tarde).
    Un buen rato que pasamos jugando con el sobrino de Mari Ángeles (y nosotros también jugamos) a ver quién era capaz de marcar un gol en una de esas porterías "flotantes"…

     

    Después, a eso de las 8 me fui pal tenis, hoy hemos estado: San, Miguel, Alexis, Jamie, Manolo, Rafa y yo.
    Antes de empezar el entrenamiento Manolo y yo estuvimos peloteando en la pista 2, después se nos unió San, los demás estaban en la otra pista.
    Después de hacer varios tipos de "juegos" nos pusimos a jugar partidos, en la pista 1 estuvimos San y yo contra Alexis y Ángel y los otros cuatro en la otra pista, pero no sé en qué orden jugaron, creo que Manolo y Miguel formaban equipo.

    Después de la hora de tenis, San y yo nos quedamos un rato hablando y viendo cómo jugaban Alexis y Miguel. Éstos, al rato, nos dijeron si queríamos jugar dobles con ellos… y nos pusimos a jugar.
    En el primer set ganamos San y yo (no recuerdo bien, pero creo que fue 6-3), en el segundo creo que iban ellos ganando, aunque no lo terminamos…

    Esta segundo hora nos vino bien para "recuperar" la que no estuvimos ayer, jeje.

    Entre unas cosas y otras nos dieron un poco más de las 10 de la noche, aunque después de acabar el partido nos fuimos cada uno para nuestras casas… supongo…

     

    Ya por la noche, en realidad en la madrugada del miércoles, cuando me iba a acostar (a eso de las 00.30), sí, pronto, ya que al día siguiente habíamos quedado a las 7.45 par air a correr, así que… quise aprovechar un poco más de tiempo durmiendo. Pero me acordé que tenía que mirar unas cosas en el ordenador (de unas páginas web para un colega), y como quiera que el rúter no iba bien (tuve que reiniciarlo) y me topé con un artículo de Gisela Torres sobre Fluid Interface y como me picó la curiosidad, sobre todo a raíz de unos comentarios de que si eso que explicaba era parecido al WITH de VB, etc., pues… me dieron casi las 2 de la madrugada… menos mal que decidí dejar todo el tema para mirarlo con más calma al "día siguiente".
    En este "post" de mi blog tienes las conclusiones a las que he llegado sobre ese artículo… o mejor dicho, lo que se explica en él:
    Fluent Interface no es solo simular el WITH de VB

     

    Y esto fue todo (o casi) lo que pasó en el martes día 20.

     

    Nos vemos.
    Guillermo

  • Lunes 19… casi de resaca

    Pues eso, que el lunes ya se acabaron todos los moros y cristianos y supongo que, unos más que otros, alguno estará con la resaca de tanta fiesta…

    Por nuestra parte, quedamos a las 8.30 en el bar de abajo (abajo del hostal Tropical) para desayunar y después volver pa nuestra Málaga del alma.

    Cuando llegué ya estaban allí los que tenían que estar, a saber: Pilar (Palel), Mariluz, Sve, Julián y Juansa. Así que… a tomarse el cafelito, a hablar con Roca, pagar las 4 noches del hostal, y como la señora no sabía manejarse muy bien con una máquina nueva de tarjetas, tuve que esperar a que llegara la hija, que estaría reposando de tanta fiesta, jejeje, lo digo porque tardó un buen rato en llegar, tanto que salvo mis compañeras de viaje, los demás se tuvieron que ir.

    El viaje de vuelta estuvo bien, unas cinco hora y media tardamos en llegar a Nerja (salimos sobre las 9.30 y llegamos a las 15.05), allí nos despedimos, yo me fui pa mi casa y pensé que ellas ya se iban para Estepona, y eso fue lo que dije en el Facebook, pero no, resulta que aprovecharon la parada en Nerja para comer, aunque aún no sé muy bien dónde comieron… sí, en el restaurante que hay yendo "pa riba" pero no sé cuál… 😉

     

    Por la tarde, mi idea era ir al tenis, ya que al ser a las 8 de la tarde, pues… me daba tiempo a deshacer la maleta, dar un lavadillo a la ropa y descansar un poco. A eso de las 7 llamé a San, ya que tenía unas cosas que darle y de paso confirmar si iba a ir al tenis, pero me comentó que no se encontraba bien y que no iría al tenis, así que… le dije que me pasaría por su casa para llevarle los regalillos "oliveros", y eso hice, y como el malestar no se le pasaba ni después de degustar las rosquillas que le llevé, me quedé charlando con ella y no fui al tenis, por contrapartida aproveché que ella tenía que ir al Lidl para rellenar un poco mi nevera, que con estos días de moros y cristianos era complicado de rellenar…

     

    Y más o menos esto fue todo… mañana más, y espero que desde primera hora, es decir, con "correría", ya que Antonio me llamó preguntado si iría mañana a correr… que aunque él iba más temprano, por allí nos veríamos. También confirmé con Mari Ángeles la hora a la que quedábamos, no sea que hubieran cambiado el horario.

     

    Nos vemos.
    Guillermo