- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette partie, je vais vous montrer quelques options de refactoring qui sont disponibles à l'intérieur de PyCharm.Le refactoring, c'est le fait de prendre un code existant et d'essayer de l'améliorer, par exemple en évitant certaines répétitions.
00:00:13 :Dans ce cas-ci, j'ai deux blocs de code.Un bloc qui me permet d'écrire des données à l'intérieur d'un fichier JSON et l'autre qui me permet de le lire.
00:00:20 :Ça c'est pour lire les données, ça c'est pour écrire.J'aimerais bien mettre tout ça à l'intérieur de fonctions et éviter certaines répétitions qui sont faites ici.
00:00:27 :Par exemple sur le nom du fichier qui est répété deux fois dans mon script.Tout ça, je vais pouvoir le faire avec des outils de refactoring de PyCharm.
00:00:35 :La première chose que je vais faire, c'est éviter la répétition de cette chaîne de caractère ici.Ce que je peux faire, c'est mettre mon curseur directement dans la chaîne de caractère.
00:00:43 :Je ne suis même pas obligé de la sélectionner.Je mets mon curseur ici, je fais un clic droit et je vais aller dans Refactor, cliquer sur Introduce Variable.
00:00:52 :Ça va me permettre de créer une variable à partir de cette chaîne de caractère.Je clique dessus et automatiquement je vais avoir ici un pop-up qui apparaît qui me demande quelle expression je veux remplacer.
00:01:03 :Je vais par défaut Data.json ou je peux aller carrément sur le Open Data.json.Je vais sélectionner uniquement cette chaîne de caractère.Je clique dessus et vous voyez qu'automatiquement PyCharm a détecté qu'à l'intérieur de mon fichier, j'ai une autre occurrence de cette chaîne de caractère.
00:01:18 :Il me propose de remplacer uniquement l'occurrence qui est sélectionnée actuellement ou de remplacer les deux occurrences directement.Je vais remplacer les deux, je vais cliquer ici et il va nous demander d'entrer un nom pour ce fichier.
00:01:31 :Vous voyez qu'à partir de la chaîne de caractère, il a réussi à générer lui-même un nom et il m'en propose d'autres ici.Je peux choisir de garder le nom par défaut, Data.json, de choisir S ou File ou même d'entrer directement un nom que je voudrais moi-même donner à cette variable.
00:02:01 :Je vais ensuite créer une fonction à partir de ces deux lignes de code.Je vais juste supprimer pour l'instant le print.Pour supprimer rapidement une ligne, vous pouvez mettre votre curseur sur la ligne et faire CMD X ou CTRL X sur Windows pour couper cette ligne.
00:02:14 :Vous n'avez même pas besoin de la sélectionner au complet, vous faites CMD X et ça va supprimer cette ligne.Je vais créer une fonction à partir de ces deux lignes de code.
00:02:22 :Je les sélectionne, je fais un clic droit, je vais là encore dans Refactor et on va cliquer cette fois-ci sur Extract Method.C'est marqué Method mais dans ce cas-ci, ça marche aussi pour les fonctions.
00:02:32 :Il garde le même mot dans les deux cas.Là dans ce cas-ci, je ne suis pas à l'intérieur d'une classe donc ça va être une fonction et non pas une méthode mais c'est le même mot qui est utilisé.
00:02:40 :Donc Extract Method et il va m'ouvrir un panneau ici qui me permet de spécifier le nom de cette méthode.Je vais l'appeler tout simplement ReadData et il me met un petit aperçu ici de ce à quoi va ressembler la méthode que je vais créer.
00:02:53 :Dans ce cas-ci, comme je vous disais, ça va être une fonction.Je clique sur OK et automatiquement, vous voyez qu'il a créé la fonction, qu'il a mis mon code à l'intérieur et qu'il l'appelle automatiquement.
00:03:02 :Il a fait également une variable globale.Dans ce cas-ci, on n'en a pas besoin puisque c'est f qui est défini quand on fait le width open et qui va être égal à notre fichier.
00:03:11 :Donc on n'a pas besoin de cette variable globale.Vous voyez que très rapidement, ça va nous permettre de créer des structures comme ça sans avoir besoin de faire des coupés, copier, coller, etc.
00:03:20 :On peut passer à la place par le menu Refactoring pour que ça aille plus vite.Là, il me met un avertissement puisque j'ai également une variable f qui est dans le scope de mon script.
00:03:29 :Mais on va tout de suite créer une autre fonction pour ces trois lignes de code, ce qui va enlever cet avertissement.Donc là, dans ce cas-ci, je vais créer une autre fonction pour ça.
00:03:36 :Je sélectionne tout ça, je fais un clic droit et je vais là encore aller dans Refactor, cliquer sur Extract Method.Je vais l'appeler tout simplement Save Data.
00:03:44 :Cette fois-ci, je clique sur OK.Et là encore, vous voyez que ça m'a permis de créer très rapidement une fonction.On n'a plus l'avertissement puisque maintenant, cette variable f se retrouve à l'intérieur du scope de nos fonctions respectives.
00:03:56 :On peut supprimer le Read Data et le Save Data ici.On n'en a pas besoin et je vais faire un reformat de mon code en appuyant sur Option-Command-Lpour rapidement formater mon fichier et ne plus avoir ces lignes qui ne servent à rien.
00:04:08 :Donc là, ici, on pourrait terminer notre refactoring par exemple en faisant un return de data.Et on pourrait également ajouter un paramètre à cette fonction Save Data.
00:04:17 :Pour l'instant, j'ai mis New Data ici.Mais ce qu'il serait préférable de faire, c'est directement de passer le data qu'on veut sauver dans notre fichier à notre fonction.
00:04:25 :Je vais vous montrer qu'on peut faire un refactoring également pour ça en passant par le menu.Je vais appeler de nouveau ma fonction ici.On appelle la fonction. Pour l'instant, on ne lui passe aucune valeur puisque la valeur est définie directement dans notre fonction.
00:04:37 :Je vais enlever cette variable ici.Là, vous voyez qu'elle n'est pas définie donc on a une erreur.En faisant ceci, cette fois, la variable est indiquée comme manquante.
00:04:46 :On a Unresolved Reference New Data et c'est normal puisque cette variable n'est pas définie.Je vais pouvoir créer un paramètre à partir de cette variable en faisant un clic droit avec mon curseur sur cette variable.
00:04:57 :Je retourne dans Refactor et je vais faire Introduce Parameter.Là encore, il va nous demander l'expression que l'on veut sélectionner.Dans ce cas-ci, ça va être uniquement New Data.
00:05:06 :Je clique dessus et vous voyez qu'automatiquement, on a un paramètre qui a été créé.Je vais l'appeler New Data.Pour l'instant, il a remis New Data mais nous, on n'a plus cette valeur ici.
00:05:23 :Vous voyez que vraiment, avec ces options de refactoring, on peut gagner du temps en faisant des extracts de méthodes, de variables.Ça nous permet de remplacer efficacement et rapidement beaucoup de codes d'un coup.
00:05:33 :Pour finir sur cette partie de refactoring, je voulais vous montrer l'intérêt d'utiliser le refactoring pour renommer des éléments.Généralement, sur la plupart des éditeurs de texte, quand vous voulez modifier un élément, vous allez passer par un search and replace.
00:05:46 :Mais ça peut être très dangereux et rapidement corrompre certaines parties de votre code en remplaçant des termes qui n'auraient pas dû être remplacés.Par exemple, ici, j'ai une classe qui s'appelle ma super classe qui utilise la fonction super.
00:05:58 :Et j'ai également une fonction qui s'appelle fonction super qui retourne la chaîne de caractère super.Et j'importe cette fonction dans un autre fichier app test ici.
00:06:06 :Donc, j'importe cette fonction et je l'utilise.Moi, ce que je voudrais, c'est renommer cette fonction super pour qu'elle s'appelle à la place fonction incroyable.Donc, ce que je pourrais faire, c'est utiliser le search and replace en allant dans edit ici, dans find.
00:06:19 :Je vais cliquer sur replace in path et j'ai cette fenêtre qui s'ouvre qui me permet de remplacer le mot super par le mot incroyable.Le problème ici, c'est que vous voyez que ça va également remplacer cette fonction super.
00:06:37 :Donc là, le problème, c'est que si je fais replace all et que je confirme ici, eh bien, cette fois-ci, on a une erreur.Donc, à la place, ce qu'on va faire, c'est qu'on va faire un clic droit sur cette fonction.
00:06:47 :On va retourner dans notre menu refactor et on va cliquer sur rename.Là, ça nous ouvre cette fenêtre qui nous permet de changer le nom de notre fonction.
00:06:54 :Donc, on va l'appeler fonction incroyable.On peut choisir de chercher également dans les commentaires et les chaînes de caractère.Donc, ça, c'est assez puissant puisque si vous avez quelque part dans une fonction, un docstring ou un commentaire qui fait référence à cette fonction.
00:07:07 :Donc, si vous dites, par exemple, dans un commentaire, cette fonction super est utilisée.Eh bien, PyCharm va également être capable de remplacer ces occurrences à l'intérieur des commentaires.
00:07:15 :Par défaut, vous voyez, il est décoché.Donc, vous pouvez choisir de le laisser décoché.Ça, c'est à vous de voir ce que vous préférez.On peut également choisir le scope.
00:07:23 :Donc, par défaut, ça va être dans project files.On pourra aller chercher pour renommer uniquement dans le fichier courant si c'est quelque chose que vous voudriez spécifier.
00:07:31 :Donc, moi, je vais laisser project files ici.Comme ça, ça va également renommer dans mon autre fichier app test.Et je peux faire un preview ou cliquer directement sur refactor.
00:07:39 :Donc, je vais cliquer sur preview pour voir ce que ça fait.Et là, on a la fenêtre de refactoring qui est affichée.Et il va me montrer tous les endroits où cette fonction est utilisée.
00:07:48 :Donc, ça, c'est la fonction que je veux renommer.Donc, il me dit la fonction qui va être renommée en fonction incroyable, c'est celle-ci.Et il me montre ici, ensuite, tous les endroits dans mon projet où il a trouvé cette fonction.
00:07:58 :Donc, ça me permet de vérifier, en fait, si les fonctions qui vont être remplacées sont les bonnes.Puisqu'il pourrait arriver quand même que PyCharm se trompeou que vous avez une autre fonction super dans un autre fichier que vous ne voulez pas renommer.
00:08:09 :Donc, dans ce cas-ci, vous pouvez vérifier que tout est bon via ce panneau.Si jamais vous voulez exclure une ligne pour qu'elle ne soit pas renommée,vous pouvez faire un clic droit et cliquer sur exclude pour vous assurer que cette occurrence, par exemple, ne soit pas renommée.
00:08:21 :Dans mon cas, ici, tout est bon.J'ai bien l'import ici qui est détecté et le print quand j'utilise ma fonction.Donc, c'est tout bon.Et je vais cliquer sur Do Refactor.
00:08:30 :Et vous voyez que, cette fois-ci, le refactoring a fonctionné.Donc, j'ai bien renommé ma fonction.Et super, il est resté inchangé.Si je vais voir dans mon fichier AppTest ici, j'ai bien mes fonctions qui, également, ont été renommées.
00:08:41 :Donc, vraiment, dès que vous renommez quelque chose,moi, je vous conseille très fortement de passer par cet outil puisque ça va vous éviter beaucoup de problèmes.
00:08:47 :Et ça va vous assurer, en fait, quand vous renommez quelque chose, qu'il est renommé à l'intérieur de votre projet au complet.Donc, comme ça, très rapidement, vraiment, vous pouvez modifier le nom de certaines fonctions, de certaines classes.
00:08:58 :Et, au début, personnellement, j'avais un peu peur d'utiliser cette façon de fairepuisque ça va changer beaucoup de choses pour nous, forcément.Et je préférais faire un Search and Replace en vérifiant précisément chaque terme qui était remplacé.
00:09:09 :Mais, au final, vous voyez qu'on a quand même cette flexibilité avec les outils de refactoringpuisqu'on peut afficher cette fenêtre et quand même vérifier tout ce qui va être renommé avant de faire le refactoring.
00:09:19 :Et, la plupart du temps, en fait, personnellement, je fais pas mal confiance à PyCharmpuisque je sais, quand je renomme quelque chose, qu'il va renommer uniquement ce qu'il faut.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.