2009-07-27 12 views
13

Estoy ejecutando un código de refactoring dojo para algunos compañeros de trabajo que me preguntaron cómo la refactorización y los patrones van de la mano, y necesito una base de código de muestra. Alguien sabe de un buen punto de partida que no es tan horrible que no pueden dar con el código, pero ¿pueden reescribir su camino hacia algo útil?¿Buenos ejemplos al enseñar refactorización?

Respuesta

16

En realidad, le sugiero refacturar algunos de sus códigos y los de sus compañeros de trabajo.

Siempre hay lugares en los que se puede refactorizar una base de código existente, y la familiaridad con el código existente lo ayudará a sentirse más como una cosa útil y menos como un ejercicio. Encuentre algo en el código de su compañía para usar como ejemplo, si es posible.

+1

Tras la respuesta de Thorarin: Código duplicación es objetivo por lo general más obvia para la refactorización por lo Sugeriría buscarlo en primer lugar. –

3

El primer capítulo de Martin Fowler "Refactorización" es un buen punto de partida para la refactorización. Entendí la mayoría de los conceptos cuando uno de mis maestros en la escuela usó este ejemplo.

+0

Gracias. Encontré el código de muestra en http://david.koontz.name/home/Projects/Entries/2008/4/13_Photo_of_the_Day.html a través de http://refactoring.com debido a su sugerencia. Lo comprobaré. – Ball

1

¿Cuál es el nivel de conocimiento general de sus compañeros de trabajo?

Algo básico como la duplicación de código debería ser fácil de entender. Dos piezas de código (casi) idéntico que se pueden refactorizar en un método reutilizable, clase, lo que sea. Usar un ejemplo (pasado) de su propia base de código sería bueno.

0

Le recomendaría que desarrollara un proyecto de ejemplo simple para un requisito específico.

Luego agrega un requisito más y realiza cambios en las clases existentes. Sigues haciendo esto y les muestras cómo te cuesta hacer cada cambio cuando el código no está diseñado correctamente. Esto les hará darse cuenta fácilmente porque, esto es lo que esas personas estarán haciendo en su trabajo diario. Haga que se den cuenta de que, si no se siguen patrones y principios desde el principio, ¿cómo van a terminar en un lío al final?

Cuando se dan cuenta de eso, comienzan desde cero o refactorizan el código dañado. Ahora agregue un requerimiento y dígales que es fácil cambiar el código refactorizado, por lo que solo debe probarlo algunas clases Un cambio no afectaría a otros y así sucesivamente.

Puede usar la clase de computadora, teclado e impresora como ejemplo. Agregue requisitos como, querrá que la computadora lea desde el mouse, luego un requisito más puede ser que su computadora quiera guardarlo en el disco duro antes que imprimirlo. Finalmente, su código refactorizado debería ser similar, su clase de computadora debería depender de la clase de dispositivo de entrada abstracta y de la clase de dispositivo de salida. Y su clase de teclado debería heredar de la clase Inputdevice.

0
  • Refactorizar es un requisito no funcional cuando el código realiza la funcionalidad correcta para la que está diseñado, pero es difícil de depurar, requiere más esfuerzo para mantener y un cuello de botella en el rendimiento. Refactorizar es cambiar para ser fácilmente mantenible, buena legibilidad y mejorar la eficiencia.

Por lo tanto, debemos centrarnos en los criterios para hacer que el código sea más legible y fácil de mantener.

  • Es obvio que tener un método/función muy grande puede ser difícil de entender.
  • La clase depende de que otros cientos de clases hagan las cosas peor mientras depura.
  • El código debe ser legible al igual que leer algún flujo de trabajo.

También puede utilizar herramientas como el sonar que pueden ayudar a identificar criterios críticos como "Ciclomática Complejidad"

http://www.sonarsource.org/managing-cyclomatic-complexity-to-increase-maintainability/

se les pregunta a escribir el código ellos mismo y comprobar cómo herramienta hace refactorización . Aparte de eso, puede escribir código en eclipse y hay opciones disponibles que lo refactorizan ... enter image description here

9

Éstos son algunos códigos, tanto el original como la versión rediseñado, para que pueda preparar su kata o simplemente comparar los resultados una vez que la refactorización se realiza:

  1. Mis libros tienen ambos ejemplos más cortos y una más larga , en realidad, un largo ejemplo de libro. El código es gratis para descargar.
    VB Code Examples
    C# Code Examples

  2. Un nice example de Refactoring Workbook

  3. Tome un vistazo a RefactorMyCode

  4. Hay muchos ejemplos en Internet de juegos simples como Tic-Tac-Toe o Snake que tienen muchos olores, pero son lo suficientemente simples como para comenzar con la refactorización.

Cuestiones relacionadas