Article original : How You Can Use AI to Improve Your Code Quality
Par Shane Duggan
En tant que développeur logiciel, j'ai toujours essayé d'écrire du code sans faille. Un bon code ne se contente pas d'être fonctionnel – il doit également être élégant, efficace et robuste.
Mais soyons honnêtes – le chemin vers la perfection du code peut parfois sembler être une bataille difficile. Ou plus souvent qu'autrement, une corvée qui ne vaut pas la peine d'être poursuivie. Et avec les énormes avancées de l'IA récemment, il serait dommage de ne pas utiliser ce qui est disponible à son plein avantage.
Et si vous pouviez avoir un assistant numérique travaillant sans relâche à vos côtés, analysant chaque ligne de code, détectant les bugs et les vulnérabilités avant qu'ils ne se manifestent, suggérant des améliorations qui élèvent votre travail de bon à exceptionnel ?
Eh bien, mes amis, vous pouvez booster vos compétences en codage si vous savez comment utiliser ces nouveaux outils d'IA efficacement.
Dans cet article, je veux partager avec vous les six façons les plus courantes dont je me suis servi de l'IA pour améliorer la qualité de mon code. Cela a été un changement de jeu, libérant de nouveaux niveaux d'efficacité, de précision et de créativité dans mon processus de développement. Alors, plongeons et voyons comment vous pouvez faire de même.
Un avertissement avant de commencer
Tel que cela se présente actuellement, je ne recommanderais pas d'utiliser l'IA pour coder vos projets en entier. J'ai essayé plusieurs projets, et vous constaterez rapidement que les résultats sont généralement décevants.
Là où l'IA ne vous déçoit pas, c'est en tant qu'assistant de programmation. Vous devriez toujours être le capitaine du navire et diriger la direction de votre IA. Lorsqu'il s'agit de tâches fastidieuses et de maintenance, comme l'amélioration de la qualité du code dont nous allons parler ici, c'est là que l'IA excelle actuellement.
Alors, avec cela en tête, commençons.
Façons d'utiliser l'IA lors de l'écriture de code
#1 – Génération d'idées
Je serai le premier à admettre que je ne trouve pas toujours les meilleures solutions à un problème de codage. Je me souviens de trop nombreuses fois où j'ai travaillé sur une tâche de programmation pendant des heures, pour finalement buter sur un mur, et devoir consulter un collègue ou Stack Overflow pour obtenir de nouvelles idées.
Ce n'est qu'une fois que j'ai reçu cette contribution externe de la part d'amis ou de forums que j'ai pu me sortir du blocage mental et continuer avec de nouvelles idées. Mais cela prend généralement du temps (et souvent le temps de quelqu'un d'autre aussi), ce qui est précieux en tant que programmeur.
J'ai donc fait appel à l'IA pour m'aider. Même en dehors de la programmation, j'ai toujours été un grand défenseur de l'idée que l'une des utilisations saines de l'IA est la génération d'idées – et ce n'est pas différent pour les programmeurs.
L'une des grandes façons de surmonter un blocage mental est de demander des suggestions à ChatGPT. Si vous décrivez votre problème en détail, il fait généralement un bon travail pour déterminer quelle pourrait être la prochaine étape. N'oubliez pas d'être spécifique dans vos invites, et il est utile d'inclure certains de vos extraits de code.
Voici un exemple où je lui pose la question de ce fil Stack Overflow, et il a donné une réponse assez utile :
_"L'erreur que vous rencontrez est due au fait que la méthode player.find() retourne None pour certains éléments, ce qui signifie qu'elle n'a pas pu trouver de correspondance pour la classe spécifiée. Vous devez gérer ces cas où l'élément n'est pas trouvé pour éviter l'AttributeError. De plus, vous pouvez utiliser la fonction pandas.read_html() pour simplifier le processus d'extraction des données de tableau à partir du HTML."_
Personnellement, je pense que c'est une excellente suggestion ! Cela serait certainement suffisant pour me remettre sur la bonne voie.
Je soulignerai que vous devriez prendre les idées plus que le code que ChatGPT pourrait suggérer en bloc. ChatGPT a suggéré des extraits de code à partir de la question ci-dessus, et en général, les extraits de code fournis fonctionneront. Mais il est préférable de faire preuve de prudence et d'être responsable du code que vous produisez.
#2 - Utiliser l'IA pour les revues de code
La prochaine grande façon dont j'ai utilisé l'IA est pour réviser mon code. Cela est particulièrement utile pour les nouveaux programmeurs qui essaient de trouver leurs marques et qui n'ont pas une compréhension complète de ce qui est correct ou incorrect et des meilleures pratiques à suivre.
Je suggère principalement cela pour les nouveaux programmeurs, car nous avons déjà des outils tels que les outils de surveillance des performances des applications (APM) qui peuvent vous donner une bonne indication de la qualité de votre code sur des applications plus grandes. Mais lorsque vous êtes un nouveau développeur travaillant sur des projets plus petits, l'IA est un excellent moyen d'obtenir des revues de code rapides et perspicaces.
Si j'avais pu obtenir des commentaires personnalisés sur mon code lorsque j'ai commencé à coder, je suis sûr que ma productivité d'apprentissage et la qualité globale de mon code auraient été beaucoup plus concrètes. Je préfère même ne pas penser à ce à quoi ressemblait mon code dans les premiers jours !
Il existe de nombreux excellents outils pour cela. L'un de mes préférés est Rankode. Ils vous fournissent des rapports personnalisés qui mettent en évidence vos points forts, les domaines à améliorer et une évaluation globale de vos compétences en programmation. C'est un excellent moyen de suivre votre croissance en tant que programmeur et de garder à distance toute mauvaise habitude de codage.
Les revues de qualité de code IA de Rankode
Des outils d'IA comme ceux-ci vont être essentiels pour améliorer la qualité globale du code des programmeurs.
#3 - Complétion de code assistée par IA
Maintenant, j'ai déjà discuté de la génération d'idées avec l'IA, et j'ai également mentionné que je suis contre la prise de code de ChatGPT ou d'autres outils d'IA en bloc. Donc ce point est un peu différent.
Souvent, lorsque j'ai un concept en tête, comme la recherche binaire ou le tri par fusion, j'ai parfois du mal à transformer la théorie de ces concepts en code réel en tant que nouveau programmeur. Donc, au lieu d'essayer de m'enliser dans un trou de code mal orienté, une meilleure alternative est de faire appel à l'IA pour me donner une bonne idée de ce qui est requis.
C'est là que l'IA et des outils comme ChatGPT font du bon travail, en créant des extraits de code de manière isolée. Vous pourrez vous faire une assez bonne idée de la structure de la recherche binaire, du tri par fusion et d'autres concepts que vous souhaitez mettre en code.
Par exemple, j'ai demandé à ChatGPT :
"J'essaie d'apprendre la recherche binaire. Je comprends la théorie mais j'aimerais l'écrire en code. Pourriez-vous me donner un exemple avec des explications de ce à quoi cela pourrait ressembler ?"
Voici ce que j'ai obtenu :
def binary_search(arr, target):
"""
Effectue une recherche binaire sur une liste triée pour trouver l'élément cible.
Arguments :
arr -- Une liste triée d'éléments.
target -- L'élément à trouver.
Retourne :
L'index de l'élément cible s'il est trouvé, ou -1 s'il n'existe pas.
"""
low = 0 # Initialise la borne inférieure de la plage de recherche
high = len(arr) - 1 # Initialise la borne supérieure de la plage de recherche
while low <= high: # Répète le processus jusqu'à ce que la plage soit valide
mid = (low + high) // 2 # Calcule l'index du milieu
if arr[mid] == target: # Vérifie si l'élément du milieu est la cible
return mid
if arr[mid] < target: # Si l'élément du milieu est plus petit, réduit la plage à la moitié supérieure
low = mid + 1
else: # Si l'élément du milieu est plus grand, réduit la plage à la moitié inférieure
high = mid - 1
return -1 # L'élément cible n'a pas été trouvé
# Exemple d'utilisation
sorted_list = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
target_element = 11
result = binary_search(sorted_list, target_element)
if result != -1:
print("Élément", target_element, "trouvé à l'index", result)
else:
print("Élément", target_element, "non trouvé dans la liste.")
Avec des tonnes d'explications. Maintenant, je peux utiliser ce code comme base, passer à un nouvel éditeur de code et l'essayer moi-même (encore une fois, si vous voulez vraiment apprendre, résistez à copier ce code). Si je rencontre à nouveau un obstacle et que je ne peux pas continuer, j'ai un extrait de code parfaitement annoté auquel me référer.
C'est un excellent moyen de servir de guide pour votre code et de vous assurer que vous ne vous écartez pas du chemin.
#4 - Détection de bugs
Une autre application concrète de l'IA pour améliorer la qualité du code est de faciliter une douleur universelle connue des programmeurs - la correction de bugs.
Il existe de nombreux outils pour cela, y compris le nouveau et rafraîchi Github Copilot qui a été boosté par l'IA. Il agit comme votre assistant IA intégré, offrant des suggestions et maintenant la qualité du code au fur et à mesure.
Nous connaissons tous trop bien le sentiment d'être tenu éveillé toute la nuit à cause d'un seul bug minuscule. Eh bien, cela va changer pour le mieux avec l'aide de l'IA, ce qui est parfait pour les nouveaux programmeurs ou les développeurs juniors travaillant sur des projets à petite échelle sans le luxe d'une équipe QA.
Et en plus de l'amélioration de la qualité du code, cela réduit également la probabilité de vulnérabilités dans votre code qui pourraient se glisser, surtout si vous n'êtes pas un programmeur expérimenté.
Dans l'ensemble, je me sens beaucoup plus rassuré quant à la qualité du code de mon projet en sachant que j'ai une couche supplémentaire de vérifications et d'audit avec l'IA.
#5 - Optimisation des performances alimentée par l'IA
Cela est en quelque sorte impliqué par les points précédents que nous avons discutés. Mais je ne peux pas trop insister là-dessus. Encore une fois, plutôt que de recourir à des outils industriels comme les APM auxquels la majorité des programmeurs n'ont pas accès, vous pouvez maintenant optimiser votre code sans dépenser beaucoup d'argent.
Apprendre à utiliser l'IA pour l'optimisation des performances est un excellent moyen de garantir que le code que vous produisez est de meilleure qualité. Il suffit de vérifier avec un outil d'IA si votre implémentation d'une méthode ou d'une fonction utilise le meilleur temps d'exécution pour élever le niveau de votre qualité de codage.
Par exemple, je voulais vérifier les performances de l'une de mes fonctions, alors j'ai demandé à ChatGPT :
"Ma fonction s'exécute lentement, pouvez-vous me donner des optimisations possibles ?" (Tout en collant le code suivant)
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
Et voici ce que j'ai reçu :
"Bien sûr ! Voici une version optimisée de l'algorithme de tri à bulles avec des explications :
def bubble_sort(arr):
n = len(arr)
for i in range(n):
# Drapeau pour suivre si des échanges sont effectués dans le passage actuel
swapped = False
# Les i derniers éléments sont déjà en place, donc pas besoin d'itérer sur eux
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
# Échange les éléments s'ils sont dans le mauvais ordre
arr[j], arr[j+1] = arr[j+1], arr[j]
swapped = True
# Si aucun échange n'a été effectué dans le passage actuel, le tableau est déjà trié
if not swapped:
break
return arr
Explication des optimisations :
- Introduction d'un drapeau
swapped: Ce drapeau est utilisé pour suivre si des échanges ont été effectués dans le passage actuel. Si aucun échange ne se produit, cela signifie que le tableau est déjà trié, et nous pouvons terminer le processus de tri plus tôt. Cette optimisation aide dans les cas où le tableau d'entrée est déjà partiellement ou entièrement trié. - Réduction de la plage de la boucle interne : Dans l'implémentation originale, la boucle interne itère toujours sur l'ensemble du tableau, même si les derniers éléments sont déjà triés. En réduisant la plage de la boucle interne à
n-i-1, nous évitons des itérations inutiles sur les éléments triés à chaque passage. - Terminaison précoce : Une fois que le drapeau
swappedresteFalseaprès un passage complet, nous pouvons sortir de la boucle externe car cela indique que le tableau est déjà trié."
Pas une mauvaise réponse du tout ! Bien sûr, ce n'est qu'un simple exemple. Mais appliquer cette tactique tout au long du développement d'une application ou d'un projet fera certainement une différence.
J'ai utilisé cela de manière intensive, surtout lorsque je regarde des morceaux de code de manière isolée. C'est un excellent moyen de repérer vos mauvaises pratiques d'implémentation et de trouver des solutions plus efficaces. Une simple invite dans ChatGPT pour vérifier si votre code est optimal est tout ce dont vous avez besoin !
#6 - Documentation alimentée par l'IA
Bien que cela ne soit pas directement lié à la qualité de votre code, cela joue certainement un grand rôle lorsque vous travaillez de manière collaborative.
Lorsque vous travaillez sur des projets via GitHub, il est important que tout le monde soit sur la même longueur d'onde. Cela vient du fait d'avoir une documentation claire et concise que tout le monde dans l'équipe peut comprendre. Je ne peux pas compter le nombre de fois où j'ai lutté à travers une nouvelle base de code en raison du manque de documentation.
Avec l'IA, les développeurs sont en mesure de produire des documentations et des guides utilisateur de meilleure qualité. Les outils d'IA sont capables de développer des explications, de corriger les fautes de frappe et les phrases incorrectes, et d'évaluer l'efficacité des documents dans leur ensemble.
Je me suis même amusé avec certaines de mes documentations, créant des images personnalisées et des icônes générées par IA pour embellir les guides. Bien que celles-ci n'aient pas joué un rôle immédiat dans l'amélioration de la qualité du code, elles jouent certainement un rôle dans la rendre les documents plus digestes, ce qui se traduit par une programmation plus compréhensible.
Un rédacteur de documentation IA. Crédits : BetterProgramming.pub
Comment l'IA m'a-t-elle aidé autrement ?
Comme de nombreux développeurs et ingénieurs logiciels, j'ai également commencé à me tourner vers le travail à distance, travaillant exclusivement via GitHub et des emails. Dans ce cas, l'IA a été une bénédiction pour m'assurer que je suis à jour avec toutes mes tâches, liées ou non à la programmation.
Il existe de nombreuses façons dont l'IA peut améliorer votre productivité en général, avec des notes IA, des rédacteurs, et plus encore. Si vous n'avez pas utilisé l'IA pour booster vos flux de travail, je vous recommande vivement de vous y mettre !
Conclusion
Pour conclure, voici les six principales façons dont l'IA a été d'une grande aide pour améliorer la qualité de mon code.
Et je ne peux pas assez insister là-dessus : la différence de coder avec le soutien de l'IA me fait sentir comme si je traversais les tâches de programmation à toute vitesse maintenant.
Pour les programmeurs débutants, vous pouvez l'utiliser pour vous aider à apprendre et vous exposer à une variété de pratiques de programmation. Mais je le répète : il n'y a aucune valeur à copier du code généré par l'IA en bloc. Utilisez-le comme un moyen d'améliorer et de renforcer vos propres compétences, mais rien de plus.
Si vous avez aimé lire cet article, vous pouvez en savoir plus sur ce qui se passe dans l'IA à travers ma Newsletter Byte-Sized AI. Il y a des tonnes d'histoires passionnantes sur ce que les gens construisent dans l'espace de l'IA, et j'aimerais avoir de vos nouvelles. Alternativement, me suivre sur Twitter est votre meilleur pari.
Bon codage et j'ai hâte de voir comment vous utilisez l'IA comme votre nouvelle superpuissance de programmation !