79 votes

Lorsque vous connaissez il ' s temps de réécrire une application

C'est une leçon d'humilité, mais sans doute quelque chose de la plupart peuvent s'identifier. Je suis actuellement à l'ajout de fonctionnalités à une application PHP que j'ai écrit pour un client il y a 2 ans. Dans l'intérêt de la divulgation complète, c'était la première "vraie" application que j'ai jamais construit à partir du sol, dans le sens que j'ai rencontré avec les clients pour déterminer et d'écrire une spécification. J'ai ensuite intégré à l'application, par moi-même, apprendre SQL que je suis (j'ai eu quelques avant rudimentaire expérience en PHP).

Le client m'a contacté cette semaine pour apporter des modifications aux fonctionnalités existantes ainsi que d'ajouter de nouveaux modules à la demande. Je me rends compte maintenant que j'ai fait un mauvais travail de la modularisation de l'application depuis le début de procéder à des ajouts plus facile. Actuellement, la base de code est près de 20 000 lignes de code (c'est un assez sophistiqué, si étroit).

J'ai du mal à savoir si ou de ne pas "réécrire" la demande pour apporter des modifications plus facile et plus efficace. Je tiens à souligner que la nature de mon contrat avec le client est celui dans lequel je vais être la seule personne à faire des modifications dans l'avenir. Ils ne cherchent pas un autre développeur de cette application.

Le programmeur en herbe en moi veut toujours faire les choses de la manière la plus propre et la plus efficace pour satisfaire mon propre trouble obsessionnel-compulsif, mais je ne l'intention de facturer le client pour quelque temps que je passe la réécriture. Moralement, je me sens bien avec ce parce que le taux initial que j'ai été chargé de mer était basse - ils eu un stable, le travail d'application qui a été accomplit, sans aucune intervention de moi pendant 2 ans, et j'ai eu mon premier vrai projet de développement sur mon cv. Mon dilemme est sur le moment de décider de réécrire une application pour l'amour de développement futur.

Veuillez peser avec vos pensées. Je suis sûr que je ne suis pas le seul qui n'a jamais eu ce problème.

86voto

Wedge Points 11910

Il y a un secret 3ème option pour la réécriture / ne pas modifier la décision: réécrire un peu de temps en permanence. C'est là le génie de refactoring, vous n'avez pas à faire un monolithique décision de sauter l'ensemble des travaux en miettes et de commencer à partir de zéro, vous pouvez aborder les choses de façon fragmentaire et de travailler à une meilleure conception comme un objectif permanent. Ne pas reconstruire la maison du sol, à la place de la peinture de la salle de séjour, puis de remodelage de la cuisine, puis rewire de la tanière, ensuite refaire la fenêtre, puis le paysage de la cour, puis fixer le toit, etc. Finalement, vous vous retrouvez dans un grand-Père de l'Axe de la situation, vous permettant de modifier plus de temps que vous avez probablement jamais possible pourrait dans un énorme morceau.

Vous pouvez le faire à plusieurs niveaux, à faire un peu d'améliorations avec la plupart de chaque enregistrement (en utilisant la méthode d'extraction, de renommer les variables/méthodes, etc.) pour faire des morceaux de code plus lisible et plus facile à gérer. Ou faire de grandes améliorations à l'aide de budgets dédiés, travaillent encore de manière incrémentielle à partir d'un point a à Un point B, mais ayant le ferme objectif de parvenir à un point B (l'amélioration de la conception). Vous pouvez encore apporter des modifications importantes, mais vous avez besoin d'être intelligent pour faire. Plutôt que de simplement le remplacement de certains bits de la fonctionnalité avec une certaine manière complètement nouvelle (c'est à dire de l'API) de faire des choses que vous pouvez conserver l'ancienne bits en place et ajouter de nouveaux trucs en plus à elle, alors vous pouvez le drapeau de l'ancien bits comme obsolète et puis plus tard, de les supprimer, après que les gens ont été donné assez de temps pour faire un recours gracieux de la transition à la nouvelle façon de faire les choses.

28voto

Ryan Farley Points 7916
<blockquote> <p>Lorsque vous connaissez qu'il est temps de réécrire une application</p> </blockquote> <p>Lorsque le client paiera pour elle.</p>

25voto

grom Points 8057

7voto

FlySwat Points 61945

C’est assez par rapport à moi. Ma première application était aussi freelance et un monstre de l’ASP classique ligne 60 000.

Je reçois toujours des appels de l’entretenir de temps en temps, et alors que j’ai joué avec la réécrire, la vérité est que cela fonctionne (même si les temps ont changé), et que la confiance de mon client vaut à me faire sortir quelques poils lors de la modification il.

99 % de toutes les applications sont de la merde, cela dépend de comment expérimentés vous êtes quand vous les Regardez  :)

6voto

jtyost2 Points 1895

Le temps de réécrire une application, c'est quand le temps/coût de correction, il est plus grand que le temps ou le coût de réécrire l'application. Il pourrait être intéressant de regarder seulement la réécriture de certains aspects de la demande.

Je dirais qu'il ne semble pas comme vous avez besoin de réécrire votre application comme vous le dites, il est stable et fonctionne très bien. Mais finalement, la décision est sur combien de fois pensez-vous vous sera requise ou nécessaire pour apporter des modifications ou des ajouts à la demande. Si vous allez à ajouter à l'application une fois tous les deux ans, ne semble pas être vaut le temps en fonction de combien de temps une réécriture prendra de nouveau contre le temps pour écrire les changements dans l'application.

Je peux comprendre le désir de réécrire l'est solide, mais pas toujours d'une puce.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X