Respuesta simple: piense dos veces y luego … piense de nuevo … y luego piense de nuevo.
Refactoré un enorme sistema de producción heredado (de 12 años) en Yahoo. Me llevó 4 meses reescribir. Un desarrollador y 2 probadores en el proyecto. El sistema estaba sirviendo a 50 millones de usuarios. La nueva base de código fue de mejor rendimiento, más escalable y mantenible. Pero el despliegue de producción se retrasó por múltiples retrocesos y abarcó 5 meses. He aquí por qué … Falta de pruebas unitarias completas …
Necesita pruebas unitarias para todos los casos de esquina posibles. No había documentación del conjunto de características original. Revisé cada línea de código antes de comenzar la refactorización. Pero durante un período de tiempo, el código se agrega al sistema sin las pruebas unitarias apropiadas. Si refactoriza el código sin un conjunto de pruebas de unidad sólido, TENDRÁ a soltar ciertas funciones que no parecen ser necesarias. En un caso, el nuevo sistema funcionó bien para la mayoría de los servidores de EE. UU. / Reino Unido, pero algunas características extrañas fallaron para los usuarios coreanos. Hasta que nos desplegamos en Corea no pudimos determinar la importancia de esa característica. Y hubo muchos otros casos extremos como este.
- ¿Qué puedes hacer con PHP que no puedes hacer con Python?
- ¿Qué debo preparar para crear un mercado de nivel empresarial desde cero?
- ¿Cuáles son los elementos básicos necesarios para convertirse en un desarrollador profesional de sitios web front-end?
- ¿Qué idioma debo usar para crear un chatbot para un sitio basado en Laravel?
- ¿Alguna vez ha construido un proyecto de codificación desde cero? Si es así, ¿qué construiste?
El sistema debe ser refactorizado de vez en cuando … Pero sería mejor trabajar en un conjunto completo de pruebas del sistema antes de comenzar a refactorizar … A menos que tenga un sistema completo y pruebas de unidades funcionales, no intente refactorizar el código especialmente orientada al cliente. Debe detectar los problemas por adelantado y no esperar a que un cliente lo informe.