¿Cuáles son los buenos enfoques para limpiar proyectos antiguos?

Respuestas:

21

Tienes tres opciones básicas:

  1. Si la aplicación es muy pequeña y un verdadero desastre , comenzar de nuevo podría ser tu mejor opción.

  2. Refactor .

  3. Vive con el desorden y piratea las funciones adicionales.

Por lo general, la opción (2) es su mejor apuesta.

La cantidad de refactorización que realices dependerá del recurso que pongas frente al valor que obtengas. Las preguntas para hacer incluirán:

  1. ¿Qué tiempo / presupuesto hay disponible?
  2. ¿Cuántas modificaciones anticipas en el futuro?
  3. ¿Quién más verá el código? (es decir, ¿el código desordenado dañará tu reputación?)
  4. ¿Se espera que alguien más mantenga el código?
  5. ¿Qué herramientas de refactorización están disponibles para ayudarlo?
  6. ¿Cuál es su experiencia de refactorización?
  7. ¿Qué experiencia obtendrás de la refactorización?
  8. ¿Qué tipos de refactorización le darán más beneficios?
  9. ¿Qué pruebas automatizadas ya existen? ¿Necesitas ser escrito?
  10. ¿Cuántas pruebas manuales se requerirán?
  11. ¿Cómo te sentirás si dejas el código como está?

En mi experiencia, es muy fácil meterse en la confusión adecuada durante una sesión de refactorización. Las lecciones más importantes que he aprendido son:

  1. Haz una cosa a la vez.
  2. Da pequeños pasos.
  3. Haga buen uso de su control de fuente (verifique con frecuencia + incluya comentarios).
  4. Utilice herramientas de refactorización automatizadas.
  5. Conoce el IDE.
Kramii
fuente
66
También me gustaría agregar para evitar tener un estado roto durante demasiado tiempo. He visto morir muchos proyectos de código abierto rápidamente durante una ambiciosa reescritura / rediseño. Un proyecto no funcional mata la motivación rápidamente.
LennyProgrammers
2
Absolutamente. Con respecto a la reescritura / diseños ambiciosos, me he equivocado de esto más de una vez. Ahora, trato de tomar las cosas en pasos más pequeños. Agregué esta sugerencia a mi respuesta.
Kramii
También agregaría que no debe refactorizar nada que no tenga una prueba escrita para ello. Resista el impulso de arreglar todo y simplemente concéntrese en las áreas que deben cambiarse para agregar las nuevas funciones. Una vez que haya hecho eso, decida cuánto esfuerzo adicional desea poner para refactorizar el resto.
TMN
1
@ TMN: Idealmente, sí. Sin embargo, no siempre necesita una prueba automatizada. (1) Si el código se ha desarrollado sin pruebas automatizadas, entonces puede que no sea fácil / posible volver a ajustar las pruebas unitarias hasta que ya haya realizado alguna refactorización (2) Puede ser costoso escribir pruebas antes de realizar cambios triviales y localizados. (3) Las herramientas de refactorización automatizadas + las características IDE pueden ayudar a evitar la ruptura del código como resultado de la refactorización.
Kramii
2
Agregaría: en su control de fuente, coloque toda la refactorización en una RAMA separada. Esto ayuda a hacer una comparación sensata paso a paso, así como de bloque grande. Esto puede ser invaluable si las cosas se vuelven natillas (LO QUE HARÁN).
rápidamente_ahora
5

Bueno, al menos refactorice lo suficiente para que la nueva característica se pueda agregar de forma segura. Es decir, no lo empeora aún más. El resto depende de la motivación, el presupuesto y las limitaciones de tiempo, pero tenga en cuenta que la limpieza total de un desastre puede llevar más tiempo que la creación original.

usuario281377
fuente
1
Por supuesto, esta es la famosa regla Boyscout: siempre deje el código en un mejor estado del que lo encontró.
Jörg W Mittag
2

Esta vez mientras arreglas las cosas asegúrate de documentarlo. La próxima vez que vea el código, será mucho más fácil recordar las cosas.

Manoj R
fuente
1

Depende, va a costar más tiempo mantenerlo porque es un desastre, o reescribirlo para que no sea un desastre y se pueda mantener fácilmente. Personalmente estoy pasando por esto ahora, estoy convirtiendo un sitio de intranet a ASP.Net MVC3 porque el código anterior era un montón de basura (que escribí) porque se suponía que era desechable (sí, debería saberlo mejor ) El viejo montón de basura todavía está aquí, y es un dolor de cabeza agregar funciones y corregir errores. MVC es hermoso y hace que trabajar en él sea realmente placentero, por lo que se está reescribiendo.

BlackICE
fuente