Il y a un an, nous découvrions ChatGPT, et dans son sillon la naissance de nombreuses solutions assistées par l’IA. J’avais expérimenté ces solutions, et publié mon expérience dans l’article “Remplacé ou Augmenté ?”. Après avoir découvert comment l’intelligence artificielle transforme radicalement notre approche de la création logicielle, nous nous aventurons maintenant dans un nouveau chapitre. Cette fois, nous nous concentrons sur un aspect plus nuancé mais tout aussi crucial : comment l’IA nous permet non seulement de coder plus rapidement, mais aussi de coder mieux.
Dans ce deuxième volet de la série, nous plongeons dans le monde de ChatGPT et Github Copilot/Codeium, des outils d’IA qui se distinguent par leur capacité à respecter et à promouvoir les bonnes pratiques de développement. À travers l’objectif de l’architecte logiciel, nous explorerons comment ces outils révolutionnent les méthodes traditionnelles de codage, rendant le respect des principes de programmation non seulement plus accessible mais aussi plus intuitif.
Nous verrons comment l’IA, loin de se limiter à une assistance basique, joue un rôle clé dans l’amélioration de la qualité du code. De la simplification de codes complexes à la facilitation du refactoring en respectant les bonnes pratiques, ChatGPT et Codeium s’imposent comme des assistants précieux, augmentant les capacités des développeurs et ouvrant la voie à plus d’efficacité dans le développement logiciel.
J’utilise actuellement chatGPT en version 4, et l’extension pour vscode Codeium. NDLR : Les exemples proposés sont d’ailleurs des exemples suggérés par l’IA. Le but de l’article n’étant pas de juger des bonnes ou mauvaises utilisations des différentes techniques et patterns, mais de driver les IA génératives pour faciliter le refactoring.
Pour illustrer mon propos, je vous propose d’utiliser ces outils pour mettre en pratique quelques citations de développeurs (re)connus.
1. “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” – Martin Fowler
Cette citation souligne l’importance de la clarté et de la lisibilité en programmation. Un code de qualité est celui qui est facilement compréhensible par les humains, pas seulement par les machines. ChatGPT, en aidant à rédiger et à simplifier le code, contribue à cette clarté. Il transforme des structures de code complexes en versions plus intuitives, rendant le code plus maintenable et réduisant les erreurs humaines lors des révisions et modifications futures.
Exemple :
2. “Make the change easy, then make the easy change.” – Kent Beck
Cette maxime met en lumière l’importance du refactoring dans le développement logiciel. Pour améliorer la qualité du code, il est essentiel de rendre les changements aussi simples que possible. ChatGPT aide à planifier et à exécuter des refactorings de manière méthodique en décomposant les changements complexes en tâches plus gérables. Ce processus améliore non seulement la maintenabilité du code, mais aussi sa qualité globale, en facilitant l’intégration de nouvelles fonctionnalités et en réduisant les risques d’erreurs.
ChatGPT, I need to make a future change to this code. Could you refactor it to prepare for this change? The change will involve [describe the change]. Please make sure the code is clean and modular to facilitate this.
Puis coder (ou demander) la modification.
3. “Make it work, make it right, make it fast.” – Kent Beck
Cette citation illustre l’approche progressive du développement : Faire fonctionner d’abord, faire bien ensuite, puis optimiser. Codeium aide à respecter cet ordre, en permettant d’abord de s’assurer que le code fonctionne comme prévu, puis en aidant à le structurer correctement, et enfin en optimisant ses performances. Cette approche garantit un code non seulement fonctionnel, mais aussi performant et facile à maintenir.
La commande Clean up this codepermet de faire réécrire la fonction en conservant ses entrées/sorties.
La commande Make this faster and more efficient permet d’avoir un focus dédié sur l’optimisation du code.
4. “Don’t comment bad code, rewrite it.” – Brian Kernighan (“Code is like humor. When you have to explain it, it’s bad.” – Cory House)
L’essence de cette citation est que le code de qualité doit se suffire à lui-même sans avoir besoin de commentaires excessifs. Codeium joue un rôle clé en aidant les développeurs à transformer un code mal structuré en un code propre et clair. En minimisant la nécessité des commentaires, Codeium favorise un code auto-explicatif, ce qui améliore considérablement sa lisibilité et sa maintenabilité.
// TODO: Break down any large functions into smaller, single-responsibility functions
5. “First, solve the problem. Then write the code.” – John Johnson
Cette citation rappelle qu’une compréhension approfondie du problème est essentielle avant de commencer à coder. ChatGPT peut aider à conceptualiser et tester des solutions avant leur mise en œuvre, en facilitant la création de tests unitaires et en aidant à clarifier la logique avant le développement. Ce processus assure que le code répond précisément aux besoins et qu’il est conçu de manière optimale dès le départ.
ChatGPT, could you write unit tests that define the expected behavior of this function? Once the tests are in place, please rewrite the function to meet the test conditions.
Ainsi, il me reste à développer la fonction qui permettra à ces tests de fonctionner :
6. “The first rule of functions is that they should be small.” – Robert C. Martin
La petite taille des fonctions est cruciale pour un code propre et maintenable. ChatGPT aide à diviser de grandes fonctions en unités plus petites et plus gérables, ce qui améliore la lisibilité, facilite les tests et la maintenance, et réduit la complexité. Des fonctions bien définies et concises sont plus faciles à comprendre, à utiliser et à déboguer, contribuant à une meilleure qualité de code.
ChatGPT, this function appears to be doing too many things. Can you break it down into smaller, more focused functions that each handle a single responsibility?
NB : Il est important de noter que les codes proposés sont perfectibles. Il peut également exister des cas où la proposition de l’IA est moins performante, voire erronée.
Ce qu’il convient de noter, c’est que l’IA n’est pas uniquement un assistant pour produire un code inexistant, il peut également servir d’accélérateur au refactoring.
Conclusion : “Leave the campground cleaner than the way you found it.” – Robert C. Martin
Cette série, qui a débuté par la question “Remplacé ou Augmenté ?”, nous a menés à une découverte intéressante : l’intelligence artificielle, notamment à travers des outils comme ChatGPT et Codeium, ne remplace pas le développeur, mais le transforme en un praticien plus averti, plus efficace et plus créatif. Les citations de Martin Fowler, Kent Beck, Brian Kernighan, John Johnson et Robert C. Martin, toutes axées sur les meilleures pratiques de développement, prennent une nouvelle dimension lorsqu’elles sont mises en pratique avec ces outils d’IA.
En adoptant ChatGPT et Codeium, les développeurs ne se contentent pas de suivre les tendances actuelles ; ils s’engagent dans une démarche d’amélioration continue. La capacité de simplifier et clarifier le code, de le rendre plus maintenable, de respecter des principes de conception SOLID, et d’optimiser la performance ne sont plus des tâches coûteuses mais des objectifs facilités par ces technologies.
L’impact de cette évolution va au-delà de la productivité. Elle favorise une culture du développement logiciel où la qualité, la clarté et la durabilité du code sont des piliers centraux dont le coût diminue.
Ces outils nous permettent de laisser un héritage de code propre, efficace et ingénieux. Un héritage qui, fidèle à la métaphore de Robert C. Martin, laisse le “camp” dans un meilleur état que celui dans lequel nous l’avons trouvé.