Les développeurs n’arrivent pas à se mettre d’accord sur la direction du code. Devriez-vous refactoriser ou réécrire à partir de zéro ?
Lorsque les développeurs s’affrontent sur la direction du code, le choix entre une refactorisation et une réécriture est crucial. Pour prendre une décision éclairée :
- Évaluez l’évolutivité et la flexibilité de la base de code pour déterminer si des améliorations incrémentielles suffisent.
- Tenir compte du temps et des ressources disponibles ; Une réécriture complète pourrait être trop coûteuse.
- Évaluez les risques et les avantages potentiels de chaque approche pour la réussite à long terme de votre projet.
Avez-vous été confronté à ce choix dans vos projets ? Quels facteurs ont influencé votre décision ?
Les développeurs n’arrivent pas à se mettre d’accord sur la direction du code. Devriez-vous refactoriser ou réécrire à partir de zéro ?
Lorsque les développeurs s’affrontent sur la direction du code, le choix entre une refactorisation et une réécriture est crucial. Pour prendre une décision éclairée :
- Évaluez l’évolutivité et la flexibilité de la base de code pour déterminer si des améliorations incrémentielles suffisent.
- Tenir compte du temps et des ressources disponibles ; Une réécriture complète pourrait être trop coûteuse.
- Évaluez les risques et les avantages potentiels de chaque approche pour la réussite à long terme de votre projet.
Avez-vous été confronté à ce choix dans vos projets ? Quels facteurs ont influencé votre décision ?
-
If the written code has fundamental issues, such as not following basic patterns like SOLID principles or core OOP concepts, it is better to rewrite it from scratch. However, if only specific details need improvement, refactoring is preferable. Overall, the first choice is refactoring, followed by rewriting if necessary.
-
Rewriting an older codebase is often risky. It may cover many subtle bugs and edge cases that are difficult to unravel. Rewriting means re-exposing all of these issues. Incremental refactoring is often the safer strategy in this case. Of course there are exceptions. For example, if the technology is so outdated that the ongoing maintenance costs of even a refactored codebase will outweigh any short term benefits.
-
Sí, me he enfrentado a esta decisión y siempre depende del contexto. Cuando el código es difícil de mantener pero aún funcional, prefiero refactorizar por etapas para minimizar riesgos y costos. Sin embargo, si la base de código es un obstáculo insalvable por ejemplo, tecnologías obsoletas o deuda técnica extrema una reescritura puede ser la mejor opción a largo plazo. Factores clave en mi decisión incluyen el impacto en el negocio, la capacidad del equipo para manejar una reescritura y si hay una oportunidad de mejorar significativamente la arquitectura sin detener el desarrollo.
-
Ali Ahmad
Sr. Software Engineer | Team lead | JavaScript & Typescript | Microservices | AWS & DevOps
I've faced the refactor vs. rewrite dilemma often and found the decision rarely hinges on technical factors alone. My approach: First, quantify technical debt using metrics (code coverage, complexity scores, deployment failures) to move beyond opinion-based debates. Then consider three critical factors beyond the code itself: 1) Team continuity -Who built the original system and are they still available? 2) Business timing -Is market pressure allowing for the learning curve of a rewrite? 3) Incremental value - Can we deliver improvements while refactoring? I've learned hybrid approaches often win - strategically rewriting critical components while refactoring others, delivering value continuously rather than making an all-or-nothing bet.
-
It’s a risk reward thing: I have rarely seen an epic rewrite pulled off successfully, in no small part because the rewrite usually needs to have feature parity with the legacy app that has had years (if not decades) to improve. In the rare cases I’ve seen it succeed, it takes a strategic and intentional commitment from the c-suite to spend upwards of 3x to 5x the annual dev budget of the legacy app in order to get to actually achieve feature parity on a timeline your customer base will tolerate. So to me the decision to do the epic rewrite comes down to the true commitment of the people controlling the budget. As the epic rewrite is usually tough to swallow, I have seen a lot of professional success with incremental strangler strategies
Notez cet article
Lecture plus pertinente
-
Conception de logicielsVous êtes confronté à un dilemme de qualité du code. Comment hiérarchiser les nouvelles fonctionnalités du projet ?
-
Usages de l’ingénierie logicielleVotre équipe est réticente à donner la priorité à la qualité du code. Comment pouvez-vous les convaincre de son importance ?
-
Ingénierie informatiqueLes développeurs s’affrontent sur les décisions techniques. Comment gérez-vous les orientations conflictuelles du projet ?
-
Développement de logicielsVous êtes confronté à une crise de projet. Comment pouvez-vous maintenir une qualité de code de premier ordre ?