Je programme depuis quelques années et je suis devenu très familier avec C # et JavaScript au fil du temps. J'ai des projets C # et JavaScript plus importants que je n'ai aucun problème à parcourir. J'ai récemment commencé un projet PHP & AngularJS pour un travail sans expérience préalable avec PHP.
Le flux du côté PHP des choses devient difficile à suivre (le côté JavaScript est plus grand, mais facile à travailler), quand j'essaie de réfléchir, j'imagine une boule de fil emmêlée. Les erreurs de conception majeures que j'ai commises lorsque j'ai commencé commencent à s'accumuler et à affecter ma conception à l'avenir. Il faut de plus en plus de temps pour mettre en œuvre quelque chose de nouveau.
Je suis dans un délai serré et je trouve de plus en plus difficile d'écrire du bon code, SEC, SOLIDE. Il devient de plus en plus attrayant de copier / coller des morceaux de code pour apporter de légères variations à son comportement à mesure que le temps de conception augmente. Cela prend aussi beaucoup de temps pour revenir dans la base de code chaque fois que je dois faire un changement de contexte (d'un projet puis de nouveau à celui-ci), j'ai un sentiment d'effroi chaque fois que je retourne travailler sur ce projet.
Quelles mesures puis-je prendre pour y remédier? Le temps supplémentaire que cela pourrait prendre doit également être justifié, mon patron n'est pas un développeur et n'est pas familier avec le développement ou les cycles de vie des logiciels, donc expliquer peut être plus difficile que la normale.
la source
Réponses:
Vous contractez une dette technique. Plus vous justifiez un code bâclé avec des délais, plus vous obtiendrez de moins en moins de délais.
Comprenez que vous pouvez vous en sortir complètement. Personne ne va vous attraper en train de faire un gâchis et vous balancer. Tu vas juste te réveiller un jour entouré de fouillis.
À ce stade, vous mettrez à jour votre CV et en ferez mon problème ou vous déciderez de rembourser la dette et de passer un peu de temps à nettoyer le code.
Si vous suivez la routine de nettoyage, comprenez qu'il ne s'agit pas de "passer plus de temps sur la conception". Il s'agit de briser certaines habitudes paresseuses et de sortir les poubelles.
Jeter du code sale en gros est une mauvaise idée. Pas à cause du travail qui y a été consacré, mais parce que le code de travail capture une idée. Déplacez l'idée dans du code propre avant de jeter le code sale.
Avoir des tests unitaires aide à cela, mais si vous avez créé vos tests avec le même soin que vous mettez dans le pétrin, ils doivent probablement être réparés également.
Ne cédez pas à la rigidité. Si vous ne pouvez pas le changer, ce n'est pas un logiciel.
la source
Ceci est votre justification. 'fessez, mangez du corbeau et expliquez pourquoi les choses prennent plus de temps et que vous devez passer un peu de temps à refactoriser + repenser le système.
Si vous ne le faites pas, vous devrez refaçonner petit à petit, en bas. Les tâches prennent déjà plus de temps que vous ne le souhaitez - prenez un peu plus de temps chaque fois que vous touchez la base de code pour essayer d'améliorer quelque chose. Ajoutez un test d'intégration. Extraire une abstraction.
La réponse stupide à "Comment refactoriser un énorme projet?" est, "Une pièce à la fois".
ÉDITER
Je lisais des articles connexes et je suis tombé sur cet article de blog: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : n'essayez pas de créer une énorme «phase» de refactorisation dans votre projet; il est peu probable d'obtenir l'adhésion des propriétaires du projet, et vous ne serez pas guidé dans vos choix sur ce qu'il faut aborder pendant le temps dont vous disposez. Au lieu de cela, prenez le temps pour chaque nouvelle modification ou correction de bogue de supprimer le code avec lequel vous travaillez en ce moment. Ne laissez pas les odeurs rester lorsque vous avez l'occasion de les réparer.
la source
Sonarqube prend en charge PHP afin que vous puissiez aider à suivre votre dette actuelle et vos nouvelles fuites. http://docs.sonarqube.org/display/PLUG/PHP+Plugin
Échantillon en direct avec Drupal https://sonarqube.com/dashboard?id=drupal
la source