Je travaille sur mon projet hobby en C ++ depuis plus de 2 ans. Chaque fois que j'écris un module / une fonction, je le code avec beaucoup de réflexion. Maintenant, voyez le problème,
do {
--> write the code in module 'X' and test it
--> ... forget for sometime ...
--> revisit the same piece of code (due to some requirement)
--> feel that "This isn't written nicely; could have been better"
} while(true);
Voici 'X'
n'importe quel module (qu'il soit petit / grand / moyen). J'observe que cela se produit, quel que soit l'effort que je consacre au codage. Donc, surtout, je m'abstiens de voir un code de travail. :)
Est-ce un sentiment commun à beaucoup de gens? Ce phénomène est-il spécifique à la langue? (Parce qu'en C ++ on peut écrire la même chose de différentes manières).
Que dois-je faire si j'éprouve ce sentiment de refactorisation pour un code de production du monde réel, où le changement du code de travail ne me gagnera pas beaucoup d'éloges, mais il peut plutôt provoquer des problèmes s'il échoue.
la source
Réponses:
Ce phénomène est très courant et n'est pas spécifique aux programmeurs. Chaque fois que vous effectuez une tâche intellectuelle, vous remarquerez des dizaines d'endroits où vous auriez pu vous améliorer - après avoir pris de la distance. Demandez à un homme sage (WO-) qui n'a jamais écrit une thèse, et ils vont vous dire une chose: «Ne regardez pas Vous y trouverez une erreur sur le premier coup d' oeil. »
Il y a essentiellement deux choses pour éviter la boucle de refactoring:
la source
La refonte continue est la voie à suivre. Changer le code de travail ne causerait pas de problèmes et devrait être encouragé s'il est fait correctement. Si votre code est entièrement testé à l'unité, vous pouvez re-factoriser votre code en toute confiance.
La seule chose que vous pouvez prédire sur le code de production du monde réel est que cela changera. N'essayez pas de deviner comment cela va changer, quelles nouvelles techniques vous apprendrez demain. En bref, n'essayez pas de rendre votre code "parfait". Faites-le aussi bien que possible avec vos connaissances actuelles. Assurez-vous également que votre code est entièrement testé et extensible.
Je passe de 20% à 30% de mon temps à refactoriser le code existant. Je travaille dans une entreprise technologique et la "direction" ne s'est jamais plainte de changer le code existant. Cependant, je me rends compte que cela peut être un problème dans certaines entreprises. Martin Fowler a même une section à ce sujet dans son livre de refactoring .
En résumé, c'est un sentiment commun dans mon expérience, mais ce n'est pas négatif.
la source
Chaque module / fonction est né et évolue dans un monde de priorités. Une fois qu'il suffit de servir les objectifs du monde extérieur, il stagne souvent. Tout est finalement un échafaudage au service de l'objectif supérieur. Oui, nous devons être obsédés par le code, et cela peut aussi nous faire stagner. Ce serait peut-être une bonne chose pour vous de vous éloigner un peu du code lui-même et de réfléchir davantage aux processus qui se déroulent en vous, le producteur du code.
la source
Cela signifie que vous élargissez vos connaissances et vos points de vue.
Si vous n'avez aucune tâche de priorité plus élevée, vous devez toujours revenir en arrière et améliorer votre code.
la source
J'ai toujours pensé qu'une personne prend un cours de mathématiques pour renforcer ses compétences dans la classe précédente. L'algèbre semblait difficile, jusqu'à ce que vous preniez l'algèbre II; Ensuite, les compétences que vous avez apprises en algèbre sont devenues utiles. C'est la même chose dans la programmation, l'écriture, le travail du bois ou autre chose.
Lorsque vous avez suivi un cours de programmation, vous avez appris If-then-else, ce qui a fait beaucoup de choses jusqu'à ce que vous appreniez les commutateurs. Lorsque vous apprenez quelque chose de nouveau, vous passez par cette progression, tout le monde le fait.
la source
J'ai le même sentiment chaque fois que je lis la plupart des codes écrits par moi-même dans le passé. C'est une bonne chose, cela signifie que vos connaissances et votre style de codage se sont améliorés au fil des ans.
En ce qui concerne la modification du code de production, c'est un gros non sauf si vous avez repéré des bogues évidents. Non seulement parce que cela pourrait être une perte de temps, mais surtout parce que la grande majorité des bogues logiciels créés sont du type de ceux qui sont introduits lorsque des modifications sont apportées aux programmes publiés. Statistiquement, il est probable que vous introduisiez des bogues imprévus. S'il n'est pas cassé, ne le réparez pas.
la source
Développer une application, c'est l'améliorer et la rendre meilleure; c'est un processus continu, donc pendant que vous programmez, vous gagnez plus d'expérience et de connaissances. Cela signifie également que vous développez également, donc lorsque vous regardez votre ancien code, vous pouvez découvrir qu'il peut être amélioré.
Si vous n'avez pas ce sentiment, cela signifie l'une des deux choses suivantes:
la source