software sinonimo refactory refactorizar refactorización refactorizacion que mejorar hacer existente ejemplos ejemplo diseño código como codigo refactoring legacy-code

refactoring - sinonimo - Codificación de Katas para practicar la refactorización del código heredado



refactorizar sinonimo (3)

Emily Bache tiene un repositorio de Github con algunos katas de refactorización: Refactorización de Kata Repo de Emily Bache . Hay variantes de KataYahtzee y KataTennis para refactorizar. Además, tiene una variante de Gilded Rose Kata, que fue diseñada como un kata de refactorización.

Además, ella tiene el Racing Car Katas en su repo: Racing Car Kata . Los Race Car Katas también incluyen buenos ejercicios para refactorizar.

Esos katas tienen el código en múltiples lenguajes:

  • C ++
  • DO#
  • Java
  • Javascript
  • Pitón
  • Rubí

Me he interesado mucho en la codificación de katas en los últimos meses. Creo que son una excelente manera de perfeccionar mis habilidades de programación y mejorar la calidad del código que escribo en el trabajo.

Hay numerosos lugares donde se pueden encontrar Katas. me gusta..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

He encontrado que estos son excelentes repositorios de Katas ... mis intentos con algunos de ellos han sido inmensamente gratificantes.

Sin embargo, siento que todos los Kata que he visto hasta ahora tienen una breve venida. Ninguno de ellos parece permitirme practicar la refacturación del código incorrecto. Es genial aprender a escribir código limpio la primera vez ... pero en mi trabajo actual, no tengo muchas oportunidades para escribir código nuevo. Por el contrario, a menudo estoy luchando contra el código heredado y tratando de descubrir cómo refactorizar módulos, eliminar dependencias y reducir el acoplamiento.

Como tal, estoy buscando un par de Katas que pueda usar para perfeccionar mis habilidades de refactorizar el código heredado y convertirlo en código limpio.

¿Alguien sabe de alguno que ya exista? Sé que practico mucho mientras estoy en el trabajo ... pero me gustaría perfeccionar mis habilidades hasta el punto en que pueda ver rápidamente cómo separar dependencias y separar preocupaciones en clases que hacer demasiado.


Me siento como nigromante respondiendo a un hilo tan viejo, pero hay una cosa que haría una adición digna: Legacy Code Retreat .

Idea es tener un Retiro de código con código heredado y tratar de practicar las mismas técnicas para lidiar con eso, pero no puedo ver nada que te prohíba simplemente usar el código preparado y practicarlo solo. Solo usarlo para crear un Golden Master supone una hora de trabajo, y hay mucho más que puedes hacer. Si tu kata usualmente dura alrededor de 2 horas, yo diría que al dividir lo que generalmente ocurre en LCR en kata te da cuatro cosas diferentes para trabajar.

Hay un repositorio GitHub del autor de la idea, JB Rainsberger, que contiene un sistema heredado simple con el que debes trabajar, Trivia Game.

Desde mi experiencia como organizadora / participante, a la gente realmente le gustó esto y fue alucinante ver qué puede ser un problema en un código heredado y dónde su refactorización puede llevarlo por mal camino (¡y cómo!). Aquí hay otra cuenta de cómo se ve, por Andreas Leidig .


No conozco un sitio que los catalogue directamente, pero una estrategia que he usado en ocasiones es esta:

  1. Encuentre un proyecto de código abierto antiguo, pequeño y sin mantenimiento en sourceforge
  2. Descárguelo, haga que compile / construya / ejecute
  3. Lea la documentación, conozca el código
  4. Use las técnicas para Trabajar eficazmente con Legacy Code para obtener una parte de ella bajo prueba
  5. Refacciona esa pieza, tal vez arreglando errores y agregando características en el camino
  6. Repita los pasos 4 a 6

Cuando encuentres una parte que sea especialmente desafiante, tira tu trabajo y repítelo un par de veces para reforzar tus habilidades.

Esto no solo practica la refacturación, sino también otras habilidades como la lectura de códigos, las pruebas y el manejo de procesos de compilación.

El problema más difícil es encontrar un proyecto que te interese lo suficiente como para seguir trabajando. El último en el que trabajé era una biblioteca de Python para programación genética, y el actual en el que estoy trabajando es una biblioteca de IRC para Java.