First refactoring screencast

Note: Although this screencast is narrated in Spanish, the code is in English. Some parts of the code are legacy. There are more notes about this below. Although the code is C#, everything is valid for Java, including the use of Generics.

Me complace presentar el primero de una serie de screencasts narrados sobre refactoring. La idea surgió para ayudar en la formación de mi equipo de desarrollo pero quería tambien compartirlo con todo el mundo.

En este primer video vemos los patrones de diseño "Template Method", "Factory" y "Command", aplicando el refactoring "Replace conditional with polymorphism". Además veremos cómo usar "Generics" de manera emergente.

Aviso: Algunas partes del código eran heredadas. No prestes atención a la implementación del JsonTranslator ya que en este primer video es incorrecta. En el segundo vídeo veremos cómo en su lugar utilizamos DataContractJsonSerializer.
Las clases DTO tienen el sufijo puesto en el nombre para evitar colisiones con objetos que ya existían, pero no significa que sea una buena practica, es sólo convivencia temporal con código legado.

Desde ahora abro la posibilidad de que cualquier empresa que desarrolle software pueda patrocinar estos screencasts. Habría publicidad de la empresa al comienzo del screencast y en algún punto intermedio (una imagen con el logo). Si tu empresa tìene interes, no dudes en contactar conmigo.

Enjoyed reading this post?
Subscribe to the RSS feed and have all new posts delivered straight to you.
  • Pingback: Screencast: Replace conditional, Part II « El blog de Carlos Ble()

  • http://www.penguinjournals.com penguinjournals

    Casualidad me enfrentaba a este caso estos dias, muchas gracias Carlos 😉

  • http://www.carlosble.com Carlos Ble

    Me alegro que te sirva David! Nos vemos pronto 🙂

  • http://www.rubenbp.com Rubén Bernárdez

    Muy buena la refactorización, Carlos 🙂 Estoy deseando ver el siguiente vídeo.

    Viendo el código generado, te voy a enumerar a continuación algunas de las prácticas que yo sigo cuando programo en C#, por si alguna de ellas te parece de interés:

    * No usar nunca todo en mayúsculas INPUT_DTO, sino PascalCase o CamelCase. En ese ejemplo sería InputDto.
    * Intentar usar siempre que sea posible interfaces en vez de implementaciones concretas. Por ejemplo en:
    En vez de List, declarar IList
    * No usar “var” si el tipo no se intuye directamente. Esto ayuda a facilitar la lectura de código. Por ejemplo:
    En vez de:
    var outDto = CallService(dto); // Sin ver la firma del método no se sabe qué tipo devuelve.
    poner
    InputDto outDto = CallService(dto);

    * Los enumerados con nombre en singular en vez de en plural. El nombre de un enumerado es el nombre de un tipo nuevo y sólo contiene un valor, de ahí su singularidad. Por ejemplo: en vez de “Commands”, llamarlo “Command”
    * Los valores de un enumerado y las constantes públicas en CamelCase
    * El default de todo switch que no tenga lógica de negocio, lanzar una excepción de tipo “InvalidOperationException()”, en vez de “NotImplementedException()”, me parece más correcto, por el propio significado de cada una. Esta última la uso para las partes del código que quedan pendientes de implementar. Me ocurre mucho cuando aplico top-bottom al hacer TDD.

  • ronald

    carlos, soy nuevo en esto de TDD pero apasionado por aprender y gracias a tu blog y tu publicacion estoy aun mas interesado que nunca, tengo un sistem operativo Ubuntu 11.04 y tengo instalado el Eclipse, pero no puedo instalar mi TDD en mi eclipse , quizas no sea este un tema para escribirte pero si podrias colaborarme de lo agradeceria mucho…felicitaciones por tus proyectos realizados y por los que vendran