Session du 06 juin 2022 à 20h30
Veille & Discussions
Qualité & Architecture
Algorithmique & Performance
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Refactoring Python : bases et bonnes pratiques
Dans cette session, on va aborder le concept de refactoring : qu'est-ce que c'est, quelles sont les bonnes pratiques, pourquoi et quand refactorer du code ?
00:00:00 :Bonsoir, vous m'entendez?Ah cool.Pas forcément super habitué avec ce logiciel, c'est pour ça que je préfère vérifier.Vous voyez l'écran que je partage, j'imagine, puisque je le vois là dans le preview de l'IveStorm.
00:00:27 :Ok, nickel. Merci Leslie.Vous me dites s'il y a des problèmes de son ou de partage, n'hésitez pas à intervenir.Ouais, on va attendre quelques minutes, peut-être une ou deux minutes, le temps que les gensveulent participer au rappel du rendez-vous.
00:00:56 :Si vous avez un micro à la rigueur, ça peut valoir le coup de vous présenter rapidementce que vous faites, à quel niveau vous êtes de Python, etc.
00:01:12 :J'aurai une vue d'ensemble des participants et peut-être ça influencera le niveau de complexité.Si vous êtes trop timide, on peut le faire à l'écrit, à la rigueur.
00:01:38 :Hello, je commence si personne ne se lance.Moi je suis Vincent, je suis dans le programme de Mentora depuis le début de l'année je crois.
00:01:48 :Mon niveau est avancé et je suis le programme de Mentora pour monter ma boîte,construire un outil d'analyse de données à l'aide de Python et de Django.
00:02:08 :Vincent, plutôt avancé, autour de 6 mois d'expérience.Ouais, pas loin.Ok cool. Après on avait Jonathan, plutôt débutant.Bonsoir, je sais pas si on m'entend.
00:02:30 :Ouais ouais, on t'entend, mais dis.Bonsoir, comment ça va?Bien et toi?Ça va merci. Premier rendez-vous avec la team Mentora, tout ça.Vu que je suis tout nouveau, j'ai commencé à vendredi, samedi, j'ai avalé quelques heures de cours.
00:02:54 :Je crois que je suis arrivé à 9h50 du coup.Je viens voir comment ça se passe, je sais que je vais être un peu perdu, mais bon.
00:03:12 :Ouais ouais, carrément.On va parler d'outils, de refactoring et d'amélioration de qualité de code.Donc c'est peut-être des trucs un peu en avance de phase, surtout pour les débutants débutants,mais c'est des choses qui vont revenir très vite et vous allez être confronté à ce type de problématiques.
00:03:36 :Et en particulier, même les juniors en développement, en entreprise, c'est des choses qu'il faut être au moins sensibilisés.Après on va pas demander à un junior d'être expert forcément, mais il faut au moins qu'il ait conscience de ce qu'il a à apprendre.
00:03:51 :Après, si c'est intéressant et que ma calculatrice peut ressembler à quelque chose d'un peu plus intéressant, je suis preneur.Ok, cool.Peut-être une demoiselle? J'ai vu qu'il y en avait au moins deux, il me semble.
00:04:19 :Ou quelqu'un d'autre.Je crois qu'on est que trois là en vocal.Ah ok, d'accord. Yes, bien vu.Bon, on va démarrer. Ah, Guillaume t'as quelque chose.
00:04:36 :D'ailleurs, il faut que je fasse gaffe. Bien sûr sur Discord s'il y a des requêtes.Guillaume a un débutant aussi.Les problèmes de micro. Pas de soucis, dis-nous, tu peux écrire.
00:05:04 :J'ai suivi les dents sur Udemy déjà, je manque encore pratique. Ok, merci Camille.Ça déchire, ça déchire. Autant pour moi.Ok, Guillaume. Ça se passe où?
00:05:57 :Du coup, Guillaume, sur l'encombranement depuis la fin de l'année.Ça commence à avoir un peu de l'expérience.Ok, on va démarrer 37. Les gens, s'ils veulent venir, ils viendront.
00:06:19 :Du coup, je suis Lionel, je suis avec Thibaut, Thibaut a Docstring, la plateforme de cours et les sessions de mentorat.Et du coup, il demande à certains membres de Docstring si on peut intervenir pour du mentorat.
00:06:36 :En général, il prend des membres avec de l'expérience et ou de la pratique.Du coup, moi j'interviens assez régulièrement sur Docstring, que ce soit le Docstring pour les cours ou le Docstring public, entre guillemets,pour aider les gens sur des questions plutôt orientées Python, plutôt back, c'est-à-dire développement de code,
00:07:02 :les qualités de code, filtration de projet. J'aime bien aussi tout ce qui est résolution de bug, ça me fait réfléchir,ça fait un peu des exercices pour l'esprit par rapport à ça aussi. Donc je suis plus dans cette partie que sur la spécialisation
00:07:16 :sur les frameworks ou sur des librairies, c'est un peu moins mon truc. Après, si je dois m'y mettre professionnellementou même pour un projet perso, je m'y mets, mais je n'ai pas une connaissance absolue sur tous les frameworks,je peux m'y mettre si j'en ai besoin. Mais moi je m'intéresse plus à tout ce qui est algorithmie, qualité de code, structuration de code,
00:07:39 :architecture, logiciel. Et professionnellement, je suis développeur back-end, donc tout ce qu'on ne voit pas en général dans les applications,et plutôt dans tout ce qui est API, construction d'API et communication entre les services logiciels.
00:07:55 :Donc comme disait Thibault, j'ai autour d'une quinzaine d'années d'expérience. Bon après ça ne veut pas forcément dire grand chose,juste c'est un... enfin au bout d'un moment après ça ne me suffit plus à compter, ça n'a plus forcément de sens,
00:08:17 :C'est plus comme ça qu'on qualifie la séniorité d'un développeur en général. Donc voilà, on va partir sur un format un peu,avec une mini-présentation, c'est pas un truc super carré, on va faire un petit tour pour vous passer un peu des notions faites autour du refactoring,et essayer de vraiment choper cette notion de quand on a besoin, et quel type d'outil on peut utiliser,
00:08:47 :qu'est-ce que les problématiques qu'il y a autour du refactoring, et comment résoudre ces problématiques.Et donc là l'idée ça va être de donner un peu un sens à toutes ces notions, et commencer une démarche active et vers l'avant en fait, vers ces questions.
00:09:03 :Après, comme beaucoup de choses, c'est par la pratique et par l'itération, c'est-à-dire revenir sur les choses plusieurs fois, plein de fois, des dizaines, des centaines de fois,c'est là que vient l'expertise et la facilité sur l'utilisation des outils, ou sur la résolution des problématiques.
00:09:19 :Du coup, n'hésitez pas si vous avez des questions, si je vais trop vite, ou des fois c'est un défaut que je peux avoir d'aller super vite,et de ne pas forcément faire attention si les gens suivent ou pas, donc n'hésitez pas à me faire faire une pause,ou même s'il y a une notion ou un terme qui vous paraît un peu obscur, n'hésitez pas, ça sera bénéfique pour tout le monde je pense.
00:09:42 :Donc on va partir au piton refactoring, c'était un peu l'idée du mentorat de ce soir.Moi j'ai distingué ça en deux grandes familles de refactoring, les refactoring sur le style, qui sont plutôt accessibles,peut être mis en place assez rapidement, il y a pas mal d'outils qui le font, et quand je parle de style, en fait c'est sur la façon d'écrire les choses,
00:10:04 :ou la façon de, c'est vraiment un peu des figures de style si on fait une analogie avec le français,ou c'est plus sur un peu une esthétique et une façon de faire les choses.
00:10:16 :Et du coup, c'est pas en opposition, mais je la mets un peu séparée, ou je la mets séparée avec l'architecture,donc refactoring sur l'architecture, qui est un concept avec des concepts un peu plus avancés,problématiques autour de la production en général, souvent on se pose des questions d'architecture,quand on va faire du déploiement, ou quand on est dans le domaine professionnel,
00:10:35 :où là on a vraiment des questions de comment je vais construire mon application pour qu'elle soit déployable sur un cluster,ou sur une machine, ou chez un client, etc. Donc là c'est des questions plus de, par exemple là c'est le packaging d'application,
00:10:48 :c'est la structuration de projet, et après il y a aussi des problèmes d'architecture, on verra, je vais en parler un peu,il y a aussi des problématiques sur comment organiser le code, organiser les services, ce qu'on essaie d'implémenter avec le codepour réussir à communiquer à travers les services, les problématiques par exemple du distanciel ou du remote,
00:11:05 :ou même par exemple des services qui sont à divers endroits, pas forcément sur la même machine, ou à plusieurs machines,ce genre de questions, du coup on peut, quand on a un premier jet d'application, on peut revenir dessus,et refaire un refactoring pour avoir des modèles plus adaptés par rapport à la problématique.
00:11:23 :Après, globalement sur le refactoring, comme je l'ai décrit là, il y a plusieurs écoles,il y a des écoles qui diraient qu'il faudrait plutôt faire une préphase avant le développement,et réfléchir en amont sur une feuille tranquillement, et justement décrire ou déterminer les patterns qu'il faut mettre en place,
00:11:43 :et même limite argumenter pourquoi il faudrait mettre telle façon de faire, telle façon de faire.Après, en général, quand on est débutant, et surtout sur des petits projets ou des projets quand on débute,on va vite vers la fonctionnalité, donc on va vite vers le code.
00:11:58 :Donc là, j'ai pris un peu le parti pris de, vous avez déjà fait du code, vous avez déjà des applications, des scripts,et du coup on va essayer de voir qu'est-ce qu'on peut faire après coup sur ces codes pour améliorer la qualité,ou résoudre certains problèmes, même. Le refactoring peut aider aussi à résoudre des problématiques.
00:12:18 :Du coup, l'inspiration, les inspirations, c'est une présentation que j'avais fait sur le Discord d'Oxring public,sur une présentation d'un petit projet Halo World.C'était marrant parce que l'application, l'applicatif, c'était vraiment très simple, très très court.
00:12:34 :C'était un Halo World avec un Emoji, avec une planète, enfin avec un globe,centré sur la région où la requête était faite.Et du coup, à partir de ça, on est parti super, enfin je suis parti super loin avec de la CI, des tests, comment structurer des projets, etc.
00:12:51 :Donc il y a une première partie de 2h40, qui est assez longue, donc je vous conseille d'écouter en accéléré ou en sauté.Et dans cette première partie, je parle d'outils justement pour refactorer ou pour formater son code.
00:13:05 :Donc ça peut être intéressant éventuellement à réécouter après ce mentorat.Et après il y a une seconde partie qui parle plus sur la CI, CD.
00:13:13 :Donc ça, CI c'est Continuous Integration et CD c'est Continuous Deliberation,qui sont Déploiement Continu et Intégration Continu,qui sont des concepts plus avancés, qui sont plus autour du déploiementet de comment vérifier et automatiser le déploiement et qu'est-ce qu'on a déployé.
00:13:29 :Donc là c'était sur un exemple extrêmement simple et assez petit,pour justement permettre une transmission pédagogique des concepts et des motivations sur les concepts.Donc en parlant de motivation, l'idée ça va être de donner un aperçu sur la pratique du refactoring, des inspirations et des motivations.
00:13:46 :Donner une envie d'aller plus loin sur ce sujet, puisque c'est très large et on ne va pas tout voir,et de toute façon ça serait impossible, ça serait extrêmement long et très dur à transmettre,de tout voir, de faire quelque chose de très exhaustif.
00:14:00 :Donc là c'est vraiment un début d'exploration dans ce domaine,donc sur les notions de refactoring, qualité de code, architecture.Après je vais essayer de vous donner des pistes de recherche, des mots-clés,qui vous permettront d'aller plus loin si vous voulez continuer sur ce sujet,et fournir quelques outils, quelques pratiques pour démarrer sur cette problématique.
00:14:22 :Donc j'ai un petit message, vu que je n'arrive pas, à qui au micro je me présente?Ah ok, merci Leslie. Je mets ça de côté, hop, deux secondes.
00:14:32 :J'aimerais éventuellement un suivi si je refais un mentorat et si je retombe sur vous.C'est pas loïque.Donc du coup voilà, on va partir là-dessus.
00:14:47 :J'ai essayé de découper ça un peu en chapitres, plus ou moins structurés,bon c'est pas parfait, on va voir ce que ça donne,et vous me direz si vous avez compris des choses ou s'il y a des améliorations dans la présentation.
00:15:03 :Sûrement, parce que c'est pas super stable.Refractoring, la première partie, ça va être sur le style, ce que je disais ici,sur le style et les conventions de style.
00:15:15 :Les motivations, c'est une standardisation, normalisation,donc faciliter la lecture et la compréhension du code par d'autres développeurs,et même je pourrais dire par nous-mêmes en fait,on a un petit côté schizo quand on est, même, ça arrive à n'importe quel âge et à n'importe quelle seniorité,c'est comme on évolue dans la pratique et on évolue dans les qualités de notre code et la structuration de notre code,
00:15:43 :on peut même se retrouver à ne pas, moi ça m'est arrivé de ne pas comprendre,d'avoir des difficultés à comprendre mon code d'il y a un an, deux ans, cinq ans, dix ans, etc.
00:15:53 :Et du coup d'avoir des mécanismes ou des outils de normalisation, standardisation,ça permet justement de formater les codes et d'avoir quelque chose de stable et de normalisé,et qui aide pour la compréhension, réduire la charge mentale, ce que je mets en motivation,donc de ne pas cramer trop de temps à essayer de comprendre ce qu'on essaye de faire ou ce que quelqu'un essaye de faire.
00:16:15 :Et avec justement des standards et des normes, ça permet de structurer, de moins réfléchir sur certaines choses,comme comment est faite une classe, comment est faite une fonction, les services, comment ils sont découpés, etc.
00:16:30 :Ça fait de la réduction de charge mentale.Ça aide aux débugs, puisque souvent dans du code spaghetti, quand on a un problème ou un bug,c'est extrêmement compliqué de suivre le fil, ça peut demander vraiment beaucoup d'efforts.
00:16:44 :Ah, excusez-moi, je vais fermer, parce que là on n'est pas loin d'un hôpital du coup.C'est quoi ce que tu appelles le code spaghetti?Le code spaghetti, ce que j'appelle, c'est quand il y a un mélange, ça peut être soit dans la structuration de fichiers,il y a plein de fichiers dans tous les sens et c'est pas super bien organisé ou pas découpé de manière logique,
00:17:06 :ou ça peut être même à l'échelle d'un même fichier dans le code, où on mélange les services, on mélange l'API,on mélange l'affichage, on mélange plein de choses.
00:17:17 :Le code spaghetti, en général, c'est quand il y a plein de choses qui sont mélangées et ça fait un plat de spaghetti.Ok, c'est bon.
00:17:23 :C'est une métaphore.Et du coup, un des défauts du code spaghetti, c'est la maintenance et le debug,c'est-à-dire que c'est très dur à rajouter des fonctionnalités ou c'est à coût très cher.
00:17:35 :Et pareil, quand on a un problème, comme ça part dans tous les sens, ça peut être pénible et dur de suivre tout le fil.Après, sur le refactoring, sur le style, on peut avoir des ajouts de sémantiques, donc de sens,ça peut aider à rajouter la documentation dans le code, par exemple les doc strings ou d'autres types de doc,
00:17:56 :ou de tests et ou de tests.Là, en l'occurrence, je vais montrer quelques trucs, enfin, 2-3 trucs sur le typing, donc c'est sur la notation de type.
00:18:05 :Thibault l'utilise beaucoup maintenant, sur rajouter des types sur les variables, sur les paramètres, les arguments, etc.Donc ça permet de rajouter, d'augmenter le sens du code et d'avoir moins de questionnements de distance entre la logique du codeet le business style du code, donc ce que tu implémentes et comment tu le fais pour l'implémenter.
00:18:27 :Donc c'est les grosses motivations, en général, qui aident à faire cet effort, parce que ça reste un effort, surtout sur le style.Après, bon, ça dépend, on peut automatiser, etc., on va en parler, mais ça reste quand même un effort de standardisation,
00:18:45 :une normalisation, il faut faire un effort pour, c'est comme ranger ses affaires.Donc, en source outil, il y a la PEP8, donc PEP8.Donc là, tout ce qui est en bleu comme ça, je transmettrai le document, il y a des documents, donc avec ça, cette émoji.
00:19:03 :Et là, quand je mets ça, c'est plus un outil, donc c'est une indication de là, il y a peut-être un outil à utiliser,et l'autre, c'est plus une indication de, il y a un document qui documente la notion.
00:19:17 :Donc le PEP8, c'est sur le style guide du code Python, donc ça donne des règles, en fait, de construction du code.Donc ça reste des règles, ce n'est pas des erreurs, en fait, si on ne suit pas ces règles, on peut quand même faire un programme.
00:19:32 :Par contre, si on veut être PEP8 compatible, il faut suivre des standardisations des façons d'écrire.Du coup, on ne va pas forcément faire un détail, c'est des trucs à lire, en fait.
00:19:57 :Donc c'est des règles sur combien d'espace tu mets entre deux fonctions, les inventions, combien c'est d'espace ou une tabulation.Il est préférable de ne pas utiliser de majuscule dans les variables, il est préférable de mettre une lettre majuscule dans les classes, la première lettre, etc.
00:20:14 :C'est ce genre de conseils ou de façons d'écrire son code.Après, une autre source intéressante c'est la convention de code Python.Par exemple, il y a le naming convention sur comment on nomme une variable, une constante, des classes, comment on nomme ses fonctions, etc.
00:20:37 :Donc ça donne des règles qu'on peut suivre et qui peuvent aider à normaliser ou avoir des indices de normalisation du code.Tout ça là c'est du style, c'est comment écrire les choses et que ça soit normalisé, un côté joli dans le code.
00:20:58 :Après, là je vais parler par exemple de l'analyse syntaxique de type, ou static analysis.Ça commence à avoir mal de temps, mais les développeurs Python commencent à mettre en avant de plus en plus ce type d'outils qui permet de faire du contrôle de type avec des outils en statique.
00:21:35 :Par exemple, typiquement l'exemple c'est une fonction greeting qui prend un nom qui est une string et qui renvoie une string.Là, ce qu'on voit dans l'implémentation, ça fait une concaténation de ce nœud caractère.
00:21:48 :Et typiquement, même ce qu'on appelle greeting avec un chiffre, ça va quand même fonctionner.Est-ce qu'on peut éditer? Ah, ok, à vérifier. Non, ça ferait une erreur.
00:21:58 :Mais en fait, avant l'exécution du script qui pourra justement conduire à une erreur, si on a un outil, je vais en parler juste après, ou un éditeur comme PyCharm,il peut nous dire que là il y a un problème de type et qu'il n'y a pas une cohérence de type. Par exemple, on peut essayer, je vais vous montrer.
00:22:19 :Donc là on a la fonction, elle n'est pas contente, hop. Et typiquement là on fait greeting, hop.Et typiquement là il propose hello world, donc ça fera print hello world. Là normalement, ça va faire print hello world, donc ça marche.
00:22:41 :Par contre là si on parle du fil 42, là normalement il devrait nous dire, l'outil, que là il y a un problème de type.Expecting, là vous ne voyez pas, je ne suis pas sûr que vous le voyez, mais en gros il dit j'attends le type string, et en fait tu me files un type int.
00:23:25 :Donc là, je vous ai filé la documentation Python, donc en général, enfin en général, très souvent il faut aller voir la documentation Python,sur tous les concepts, enfin toutes les questions qu'on peut se poser, et il y a genre 99% du temps, il y a une doc qui parle de ce qu'on cherche.
00:24:11 :Parce que en Python, il y a le type dynamique, donc le DukeTyping, et du coup avec ces indications on peut revenir à un check statique des types,voir à ce que c'est cohérent ce qu'on essaye de faire. Pydint, pareil, c'est un code, un analyseur statique de code, donc qui fait à peu près,
00:24:32 :souvent les outils ont des intersections de fonctionnalités, donc après c'est un peu à la convenance, certains, il y a certains qui ont des caractéristiquessupplémentaires, donc il faut voir au fur et à mesure, selon les besoins. Donc là je vous ai passé quelques outils, moi en ce moment je m'amuse avec
00:24:48 :Bandy sur mes projets, qui fait aussi des recherches de sécurité en analyse statique, donc il regarde le code et il essaye de déterminer s'il y a des vulnérabilitésdans ce qu'on écrit. Donc ça peut être intéressant quand on a des problématiques autour de la sécurité du code, par exemple de l'injection, des choses comme ça.
00:25:06 :Et du coup ça peut aider à faire du refactoring de code, ça peut donner des indications de là, à ta place tu feras attention, a priori il y a eu des problèmesde sécurité, donc essaye de réécrire comme ça. En général ça donne des indications aussi sur la réécriture.
00:25:18 :Du coup là vous avez fait une mini-pause si vous avez des questions. C'est cette première partie.Du coup il faudrait que je regarde, je verrai avec Thibault pour transmettre le fichier et les références.
00:25:52 :C'est un markdown, ça se transmet assez facilement sur un fichier texte. Comme ça vous aurez accès à...J'avoue ne pas avoir trop de références. Ouais ouais au début ouais. Ouais c'est ça, PILONS c'est un bon outil de souveraineté de code.
00:26:11 :Après sou.py.charm c'est intégré de base, je crois que c'est un mypy, je crois que c'est intégré directement, toutes les annotations dynamiquesqu'il donne pendant qu'on écrit, je pense que c'est un moteur mypy qui tourne. Ouais, ben Arnaud, après tu le verras au fur et à mesure,
00:26:31 :quand tu décrira du code, tu auras de plus en plus de notifications de ton éditeur qui te dira, tiens là c'est bizarrement écrit,ou tu pourrais écrire différemment. Donc au fur et à mesure, les questions tu vas les avoir de plus en plus.
00:26:47 :Et du coup à un moment tu voudras essayer de résoudre ces alertes, et là c'est là, tous ces outils, toutes les solutions proposées par ces outilst'aideront à améliorer et à quitter ton code.
00:27:04 :Ouais, ouais parce que Thibault il s'intéresse plus au langage, là on est plus sur de la qualité, donc c'est une phase d'après.C'est quand même faire un plat et faire qu'il soit bon en fait. Au début ce que tu veux c'est manger.
00:27:23 :Ok, après une autre source qui peut être intéressante pour ceux que ça intéresse sur les guides de style, c'est des grandes boîtes de développementstyle Google, Amazon, etc. Souvent ils donnent des recettes ou des listes, enfin des recommandations sur comment écrire des choses, sur des problèmes communs.
00:27:48 :Et même dans le style guide de Google, si vous allez faire un tour, voir le lien, il y a même des discussions sur les avantages et inconvénientsde telle ou telle fonctionnalité du langage, ou de la façon d'écrire quelque chose, et du coup ils discutent, il y a une mini conversation de pour et contre.
00:28:12 :Et après par contre ça peut donner pour les autres développeurs, ça peut donner un début de réflexion sur si on veut utiliser telle ou telle fonctionnalité,quels sont les dangers potentiels ou que des grands groupes ou des grosses boîtes de développement comme ça ont à dire sur telle ou telle feature,
00:28:34 :ou façon d'écrire, genre les contextes managers, en général c'est des trucs assez avancés, mais il y a aussi des trucs simples, sur la récursivité,est-ce que c'est plutôt recommandé ou pas, ou sur les fonctions dans des fonctions, des choses comme ça.
00:28:48 :Donc c'est une source vraiment intéressante, une qualité très élevée, et il y a beaucoup de choses qui peuvent intéresser.On n'est pas obligé d'être super exhaustif, de tout regarder et de tout faire, par contre ça peut être sympa quand on commence à avoir un peu d'expérience de développement,de se poser la question de comment je peux faire mieux, des gens qui ont des années et qui sont les développeurs Google ou les ingés Google,
00:29:15 :c'est le top mondial à peu près en développement, donc ça peut être intéressant de voir comment eux, ils développent et comment ils normalisent,les standardisent leurs pratiques de développement.
00:29:28 :Donc je vous conseille, dès que vous allez commencer à passer le cap de Commence à avancer en jupython, et vous vous posez la question de comment écrire bien les choses,je vous conseille d'aller voir ce type de style guide.
00:29:45 :Donc après je vous ai passé des liens par rapport à la documentation, moi je considère que ça peut être dans le domaine du refactoring,on a écrit un code, donc on a écrit la fonctionnalité, du coup après ça peut être intéressant de se poser la question comment je documente cette fonctionnalité,
00:30:01 :comment je fais un site de documentation, donc ça peut être soit des fichiers extérieurs, on écrit de la documentation pour la documentation,soit ça peut être de la documentation dans le code, donc là du coup on se ramène à une forme de refactoring, par exemple avec les doc strings,
00:30:17 :bien nommés, ou les doc tests, ou même de la documentation, enfin ouais, des doc strings du coup, des chaînes de caractère pour la documentation.Et après du coup il y a des outils comme Sphinx par exemple, qui ingère le code source, donc qui regarde directement dans le code,est-ce qu'il y a des annotations de documentation dans des doc strings par exemple, et qui après fait de la génération statique de sites,
00:30:45 :donc les autogenerate documentation, multiple formats, et après il propose de sortir du PDF du site statique HTML etc.Donc moi j'ai eu un peu d'expérience en Sphinx, une bonne doc, après il y a des pour et des contre, donc on pourra peut-être en parler plus en détail,il faudrait que je regarde si Thibault a fait des vidéos sur la documentation, et il y a des pour et des contre sur chacun des outils,
00:31:10 :genre Sphinx a tendance à, je ne vous dirais pas polluer, mais ça demande un certain formalisme, et il faut remplir, il faut rentrer dans le code,donc la documentation est dans le code, donc du coup ça peut créer des gros blocs de doc dans du code fonctionnel, donc ça dépend des styles.
00:31:27 :Read the doc est pas mal, je crois que Read the doc comme mkdoc, moi j'utilise mkdoc pas mal en ce moment, et du coup ça gobe du Markdown,c'est un format plutôt simple, moi j'aime bien la simplicité, donc Markdown ça me va très bien pour faire ça, et ça te fait de la génération automatique de site.
00:31:48 :Donc si vous voulez commencer à poser des questions sur comment faire de la documentation sur votre code, mkdoc c'est un truc sympa à regarder.Ça fait des jolis, en plus c'est assez joli. Par exemple si vous avez joué avec FastAPI, qui est le flash, la version asynchrone,
00:32:09 :par exemple c'est écrit en mkdoc la documentation. Donc voilà sur le style c'est à peu près tout, il y a les guides de style,il y a des conventions, les PEP, donc PEP8 sur le style guide Python officiel, et après il y a des déclinaisons sur ces styles de guide,
00:32:47 :Donc ça peut être un truc qui revient quelques semaines après ou quelques mois après, mais du coup comme on a eu cette lecture et cette réflexion,ça peut infuser dans l'échoir et dans la façon dont on écrit les choses par la suite. Donc il y a ce côté un peu de, on s'initie au truc,
00:33:04 :et on laisse un peu mariner le truc, là je suis très bouffe en métaphore là aujourd'hui, mais on laisse mariner le truc, et au moment où on va retomber dessus,et quand on va retomber dessus plusieurs fois, du coup ça va ressortir et ça va commencer à avoir un effet positif sur la qualité de code, le refactoring.
00:33:24 :Ok, du coup vous avez des questions sur cette première partie sur le style? Mesdames, Messieurs? Ah, c'est bon, ok.Monsieur Camini? Pas de questions? Ok cool. Bon on va continuer.
00:34:05 :Donc là pour moi c'est les trucs plus importants sur la structuration de projet, sur comment écrire les choses d'un point de vue fonctionnel,et découpage de fichiers etc. Donc c'est des trucs plus profonds et plus impactants.
00:34:20 :Donc en motivation c'est toujours pareil, standardisation, normalisation, donc il y a ce qu'on appelle des design patterns, des patterns de code,où on identifie des problématiques sur, par exemple on veut transmettre, genre typiquement par exemple Django il suit des façons d'écrire son code,même ses résolutions de problèmes, par exemple sur l'écriture de l'API ou sur l'écriture de l'ORM, par exemple c'est un design pattern,
00:34:49 :c'est une façon d'écrire les choses pour résoudre un problème. Donc le problème en l'occurrence c'est faire de la, comment on appelle ça, j'ai oublié,en database, faire des schémas, mais sans écrire du code SQL explicite, donc du coup lui, par exemple Django, utilise l'ORM,Object Relation Mapping, qui lie des objets Python à des tables et des colonnes SQL ou database, et du coup il fait faire à ses développeurs
00:35:16 :la base de données sans vraiment écrire du code de base de données, mais en écrivant du code Python, et via ce design pattern ORM,il arrive à résoudre ce problème via cette façon de faire. Bon c'est un exemple, comme il y en a certains, enfin je pense qu'il y en a pas mal qui font du Django,
00:35:33 :peut-être que ça vous parlera, mais du coup il y a des design pattern, il y en a sur plein de sujets, sur comment passer des informations, des messages,un peu comme Hibernate sur le principe, il y a une question là d'Arnaud qui dit un peu comme Hibernate sur le principe, Hibernate je suis pas sûr de comprendre,
00:35:50 :c'est la fonctionnalité de sommeil d'un ordi, c'est autre chose? Ah ok, je connais pas, mais ok je regarderai.Utiliser en jeu, ok, bah sûrement, ça sonne, en tout cas je connais pas le pattern Hibernate, mais de ce que tu décris, donc une opération en BDDsans vraiment toucher à la BDD, ça y ressemble dans la façon de faire, un peu comme Django avec son ORM, même s'il a pas inventé ORM, mais il utilise ce pattern.
00:36:39 :Donc en motivation il y a simplification, réduction, dédoublement, donc en général quand on refait le refactoring d'architecture,donc un niveau assez léger, c'est par exemple simplification du code, quand en relisant son code on se dit ah mais c'est super compliqué au final,je peux faire c'est juste une addition, pourquoi j'ai 50 lignes de code qui fait ça, donc on peut refaire du refactoring sur l'architecture de son service addition,
00:37:09 :et du coup on peut réduire et simplifier le code. Après souvent, par exemple typiquement PyCharm, il fait souvent des indications de dupliqués de code,donc de duplications ou dédoublements de code, donc là on peut refaire ces indications de là regarde, à deux ou trois endroits tu fais la même chose.
00:37:30 :Il commence à être intelligent d'ailleurs, donc même s'il y a des modifications de nombre de variables etc, il arrive à comprendre que ce que tu fais c'est vraiment très proche,et donc là il t'incite, il te dit tiens regarde là, il y aurait peut-être moyen de réunir la fonctionnalité.
00:37:46 :Donc réduction de dédoublement c'est quand on voit plusieurs fois la même chose, genre le plusieurs fois en général c'est plus de trois fois,là on commence à se dire ouais il y a peut-être un refactoring à faire pour limiter ces duplications de code.
00:38:00 :Une autre motivation c'est l'aide au déploiement, à la distribution, donc quand on fait son code en général c'est pour le partager, pour l'utiliser ou le faire utiliser par d'autres,donc il y a cette problématique qui revient sur comment je fais pour le transmettre à quelqu'un et comment je le formate justement,
00:38:17 :comment je fais un formatage d'architecture pour que ça soit déployable, distribuable etc.Donc apparemment en Python il y a la notion de packaging, donc avec un code au départ qu'on a écrit qui fait que du fonctionnel,on a un refactoring d'architecture ou de structuration du code pour que ça devienne un package qui puisse être distribuable et installable sur d'autres ordinateurs et d'autres utilisateurs.
00:38:39 :Et après il y en a sûrement plein d'autres motivations mais il y a une grosse motivation qui est autour de l'optimisation, l'efficacité, performance,donc là c'est des notions un peu plus avancées qui arrivent en général après coup quoi, où quand on commence à, on a fait la fonctionnalité,on l'a refactorée, on l'a déployée etc. et là on commence à avoir des problèmes de performance ou ça va pas assez vite ou ça prend trop de ressources etc.
00:39:04 :On peut commencer à se poser des questions, est-ce qu'il n'y a pas du refactoring à faire, donc moi que je note, enfin que je dénote d'architecture,qui permettrait justement d'adresser ces problèmes d'efficacité, enfin en général c'est l'efficacité qu'on cherche.
00:39:27 :Ah le vrai Thibault est parmi nous, merci gars, coucou à toi aussi Thibault.Désolé, j'avais pas vu que j'allais emprunter ton nom, mais en fait c'est logique quand tu m'as filé les accès, mais ça m'a fait bizarre au début.
00:39:46 :Yes, c'est normal.Du coup là sur ces types de refactoring, il y a un canevas assez important, donc canevas c'est un blocage caché qu'il faut faire par attention,ce type de refactoring c'est plutôt profond, plutôt impactant, et donc par conséquent c'est plus risqué.
00:40:08 :C'est à dire qu'il y a un risque plus important de modifier beaucoup du code, déplacer des fichiers, renommer des fichiers ou des classes entières,ou même refaire du code d'un point de vue architecture, donc plutôt profond, et donc il y a un risque de casser la fonctionnalité,de casser son code, de casser son workflow de déploiement, etc.
00:40:36 :Donc il y a une règle d'or, normalement quand on fait ce type de refactoring, c'est qu'on doit avoir des tests unitaires, des tests fonctionnels,des tests d'intégration, des tests de déploiement, etc.
00:40:45 :C'est une liste non exestive, qui couvre autant que possible l'application et ses fonctionnalités.Donc en gros, si on fait une application qui déploie un site web, il faut s'assurer qu'on a des tests qui nous permettent d'automatiser ce déploiementet qui permettent de vérifier l'intégrité de ce déploiement, et que ça répond bien au service.
00:41:06 :Si on a des clients en face, qu'ils arrivent toujours à faire ce que le site est censé proposer en service, etc.Du coup sur ce type de refactoring, il faut vraiment être sûr de pouvoir tester et de ne pas casser sa fonctionnalité, de ne pas casser son code,et de pouvoir tester si possible de manière aussi automatique que possible.
00:41:27 :Thibault, par exemple, lui, souvent comme il veut aller vite dans ses présentations, il fait du test, ce qu'on appelle du test fonctionnel,c'est un test direct où il lance le programme et il essaie de tester à la main, voir si ça continue de fonctionner.
00:41:39 :Comme c'est des petites applications, ça marche très bien et c'est faisable.Après, quand on commence à avoir vraiment des projets de plus grande ampleur, qui dépendent d'autres services, etc., ça devient vite ingérable à la main.
00:41:49 :Donc c'est là qu'on rentre dans l'automatisation automatique et des outils d'automatisation.Donc je vous donne quelques liens, mais bon là c'est quand même un truc plus avancé, je ne vous conseille pas de rusher là-dessus tout de suite.
00:42:01 :Mais comme je disais, l'idée c'est de donner des mots-clés aussi.Donc en moteur de test ou intégration de test, moi j'utilise beaucoup PyTest, et dans l'industrie ça s'utilise beaucoup,qui permet de faire des tests d'application et d'écrire des choses intelligentes, de la même façon qu'on écrit les tests.
00:42:15 :Bon, chaque outil se vante de ça, mais PyTest ça marche plutôt bien.Après pour les tests fonctionnels ou d'intégration, d'époignement, moi souvent j'utilise Docker avec Docker Compose,qui permet de faire de la containerisation d'applications ou de services,ce qui me permet de reproduire par un environnement de ce qu'on appelle la production ISO-prod,
00:42:37 :donc d'être proche de l'environnement de production en local et de pouvoir faire des tests d'intégration via ces outils de containerisation.Et après le truc vraiment sympa c'est GitHub Action et tout ce qui est CI-CD, donc il y a aussi GitLab, Travis, CI, etc.
00:42:53 :Donc là c'est des outils sur le cloud qui permet de déployer ton application,de tester plein de choses, des workflows au sens général, donc le packaging, le déploiement, l'installation.
00:43:06 :Et en fait un des avantages avec la CI-CD via le cloud comme GitHub Action, c'est qu'on repart de zéro à chaque fois,parce que GitHub il n'en sait rien de ce que tu fais en général, donc il te file une machine virtuelle, ou un pod, ou un équivalent sur le cloud,
00:43:21 :et du coup tu réinstalles et tu t'installes ton application à chaque fois à partir de zéro,et comme ça ça te fait faire le process de si je dois installer sur une nouvelle machine mon application, est-ce qu'elle tourne?
00:43:32 :Et du coup c'est un très bon test de déploiement et de très bon test fonctionnel.Enfin, je ne savais pas comment écrire ces tests après, mais c'est un must-have en industrie et en entreprise,genre c'est quasi sûr que vous l'aurez, quelque chose d'équivalent en tout cas.
00:43:56 :Il y a autant de solutions que de problèmes, et inversement, il y a plein d'outils pour essayer de les adresser.Donc du coup, j'aurais pu commencer par ça en fait, sur les concepts-principes,donc ça c'est des petits trucs que je me redis assez régulièrement, qui m'aident à avancer dans le refactoring.
00:44:16 :Donc il y a le dry, don't repeat yourself, ne vous répétez pas,qui est ce qu'on parlait sur le dédoublement et la réduction des duplicate codes,et ça se base aussi sur un autre principe qui est la règle des trois,donc j'en ai un peu parlé quand je vous expliquais le dédoublement,
00:44:30 :qui est en général on refait un refacto s'il y a trop de codes similaires, similaires,et donc on parle de la règle, enfin quand ça dépasse trois ou trois supérieurs ou égales à trois,on se dit bon là on s'est répété peut-être un peu trop de fois,il y a peut-être quelque chose à faire en termes de refactoring de codes.
00:44:46 :Donc là tout ça c'est des liens, je vous laisse, je les ai mis en français d'ailleurs,donc vous pourrez lire.Il y a le key, ce que j'aime bien, c'est un de mes préférés, c'est le key-tit-sample, stupide,donc c'est de vraiment commencer simple et commencer limite bête au début,
00:45:02 :et d'avancer, de refactorer au fur et à mesure en rajoutant de la complexité,mais à partir de quelque chose de très simple, de très stupide, et d'avancer, d'itérer en fait comme ça.
00:45:11 :Donc du coup moi en général sur la structuration d'un début de projet, je suis Keith,donc j'ai fait des trucs plutôt simples et stupides, j'écris mes tests,et au fur et à mesure quand mes tests, donc j'écris même des trucs que j'ai pas encore en fonctionnalité,et du coup je rajoute, je fais une sorte de cercle où quand les tests échouent,
00:45:33 :du coup je recontinue à implémenter simplement et stupidement, et j'itère comme ça,et j'essaye d'éviter de me répéter, etc.Et donc ça fait une sorte de cercle comme ça, qui permet d'écrire le code et de rester simple.
00:45:47 :Et après, ça c'est l'autre truc que j'utilise pas mal, c'est le separation of concern,qui donne des indications, qui incite fortement à séparer en fait le plus possible,donc ça rentre aussi dans la simplicité, c'est-à-dire qu'on doit pas mélanger,on doit limiter le plus possible le mélange de fonctionnalités et de services.
00:46:10 :Une fonction, une classe, une méthode doit faire une action.Et surtout en termes de scope de fonctionnalités, par exemple le business logic,la logique de code ou la logique métier, il faut ici de la séparer autant que possible.
00:46:29 :Et même à l'intérieur des bulles, logique métier et logique de code,il faut séparer par exemple l'affichage ou l'output avec le fait de saisir une donnée,avec le fait de valider une donnée, tout ça en fait ça doit être des choses différentes autant que possible.
00:46:47 :Ouais, le test TDD, c'est ce que j'expliquais avec le cercle de rétroaction,c'est une forme de test driven.Il y a les principes, c'est vrai que j'aurais pu mettre le test driven development dans les concepts, les principes.
00:47:04 :Après moi je suis pas un ayatollah des concepts genre le TDD, c'est très bien mais c'est assez dur à mettre en place.Du coup moi je fais des versions allégées, des concepts,tout comme par exemple le Git flow, la façon de comiter et de versionner,il y a des gourous qui font des grands principes ou des grands guides,
00:47:26 :mais du coup c'est très dur surtout quand on travaille à plusieurs avec plusieurs expériences et personnalités,on a chacun notre avis sur plein de choses.
00:47:33 :Donc j'ai appris à être plutôt élastique là-dessus et à essayer de choper ce qui m'intéresseet de faire ma tambouille comme ça.Ça m'évite d'être, perso ça m'évite d'être en opposition avec d'autres personnes sur certains sujets.
00:47:49 :D'ailleurs c'est un conseil, je vous conseillerais de ne pas être trop rigide surtout,de rester fluide, dynamique.Donc là quelques principes, il y en a d'autres,mais ça c'est ce que j'utilise quasi quotidiennement, je vous ai filé,et qui m'aide à refactorer mon code et à essayer de qualifier la nature de mon code.
00:48:15 :Est-ce que c'est assez simple, est-ce que j'ai plein de choses qui se mélangent en termes de concernes ou de préoccupations.La séparation des préoccupations c'est bizarre en français.
00:48:26 :Et pareil sur la répétition, ça c'est tout de base.Donc après je vous ai passé sur le refactoring d'architecture sur les projets Python,donc il y a la structuration des projets,donc comment écrire son code au départ, comment on sépare, comment créer des répertoires.
00:48:43 :Donc il y a beaucoup de documentation, beaucoup d'avis, etc.Je vous ai passé quelques trucs que j'ai lu qui me semblaient plutôt corrects.Il n'y a pas une façon unique de le faire,donc il faut rester aussi, ce que je disais tout à l'heure, flexible et agile là-dessus.
00:48:59 :Et voir les pour et les contre, il n'y a rien qui est parfait en fait.C'est des itérations, des tentatives.Donc là je vous ai passé des liens sur des propositions,comment on crée une structure de fichier pour Python, ou un projet Python.
00:49:14 :Pareil, guide to Python, structuring your project, donc comment on construit son projet.Après il y a des trucs de base, typiquement de mettre les tests dans un répertoire test,de mettre la docs dans un répertoire docs,et de mettre son code dans un nom qui représente son projet, son application name.
00:49:34 :C'est des trucs qui sont plutôt standards,mais justement là on est dans un principe de normalisation, standardisation.Quelqu'un qui voit ça, il se retrouve sceptique, il sait de quoi ça parle,il sait où il doit chercher quelque chose.
00:49:45 :Donc ça peut être bien, même plus que bien,c'est très recommandé de suivre des standards dans ce sujet.Donc je vous ai passé des liens, il y a le layout,on appelle ça aussi en anglais, sur la construction,ou le cadre de construction d'un projet.
00:50:02 :Selon la cible de notre projet, ça peut être une command line,ça peut être un web application, ça peut être d'autres choses.Selon la cible, on peut avoir des règles différentes de comment on structure son projet.
00:50:14 :Par exemple si on a juste un script qu'on veut écrire,si on veut installer seulement un package,si on veut faire un package avec d'autres dépendances à l'intérieur,par exemple sur les web applications,sur les formats, la construction autour des web applications,j'ai mis Django et Flash,c'est peut-être des choses que vous faites déjà,
00:50:32 :donc comment construire un projet Django.Après sur Django, il y a des outils qui permettent de créerle file, la structure de fichier au départ.
00:50:42 :Je ne sais pas comment ça s'appelle, je ne suis pas très fort en Django,mais il y a une commande magique qui fait le début de la structuration.
00:50:50 :Et sur Flash, je ne sais pas, il doit aussi avoir des outils j'imagine.Et donc là ça donne des indications de comment construire sa structure de fichier,de projet, et ça permet après de pouvoir la distribuer, la déployer.
00:51:03 :Donc ça peut être en seconde phase, on a écrit son petit script,on a écrit sa fonctionnalité,si on passe sur une refactoring de structuration de projet,ça peut être des choses qui peuvent être intéressantes à prendre en comptesi on veut le distribuer et le donner à d'autres personnes.
00:51:16 :Et après j'ai mis un dernier lien sur le packaging,genre vraiment spécialisé sur le packaging.Donc en Python, on partage ou on déploie une application via des packageset on peut rendre son code, on peut rendre son application packageable,donc il suffit d'un format de packaging pour des applications Python.
00:51:39 :Et après on peut les mettre sur PyPI,qui est le serveur qui stocke les packages,et on peut même créer son propre serveur, etc.Mais du coup, si on veut rentrer dans ce système de déploiement et distribution,il faut suivre un certain format, et donc refactorer son codeou refactorer son architecture pour suivre ce format
00:51:58 :et que ça soit compatible pour du déploiement packaging.Donc là je vous ai passé quelques liens,vous pourrez aller faire un tour si ça vous intéresse,cette problématique de, par exemple j'ai une application,comment je la transmets à quelqu'unet comment je lui fais installer proprement l'application que je lui propose.
00:52:16 :Donc voilà, j'ai pas fait plus,d'ailleurs c'est bientôt une heure,mais il y a, je pourrais mettre des petits points,trois petits points encore à la fin, il y a beaucoup d'autres choses.
00:52:28 :En général ça vient avec les besoins et l'expériencesur ce qu'on veut faire et la qualité de ce qu'on veut faireet même la visée professionnelle de ce qu'on veut faire.
00:52:38 :Au fur et à mesure, il ne faut pas s'alarmer,c'est pas requis forcément pour tous les,en même temps c'est pas requis pour tous les projets,et c'est même pas requis pour tous les niveaux de développeurs,donc c'est des choses qui vont venir au fur et à mesure,et des questions qui peuvent venir au fur et à mesure
00:52:55 :sur vos projets ou même sur vos tâches professionnelles dans un futur proche.Donc voilà, mini présentation sur ces sujets avec transmission de lien,j'ai essayé de vous passer les démo-clés sur le sujet.
00:53:13 :Et du coup c'est une invitation à emprunter ce cheminet de commencer à explorer au fur et à mesure, bien sûr.C'est problématique et ne pas surtout,bon là j'ai peut-être pas très bien fait,mais l'idée c'est pas d'être effrayé par tout ça,c'est des outils, c'est des couches de complexité,
00:53:34 :c'est pas un gros bloc qui arrive d'un coup,c'est comme des couches d'oignon,on met des couches par-dessus des couches par-dessus des couches,et du coup ça agrossit comme ça de manière incrémentable.
00:53:45 :Voilà, voilà, si vous avez des questions ou des choses à me montrer,ou vous avez des questions concrètes sur des codes que vous avez par exemple,ou même des questions plus généralistes,vous pouvez prendre la main.
00:54:00 :On peut finir là-dessus.S'il en reste quelques-uns vivants...Non très bien, moi j'ai des couches un peu compliquées à suivre,je ne sais pas vraiment,je retiens juste que le meilleur exercice que tu as préféré faire,c'est celui sur la liste de course,je pense que c'est vraiment ton exercice phare celui-là.
00:54:30 :Parce que toi et tout ce qui tourne autour du manger apparemment c'est...Ah ouais, en plus là je sors de table depuis pas longtemps.Course, t'as vraiment aimé l'affaire.
00:54:41 :Mais ouais, après il y a des...À la regard, je referai le document pour vous mettre des indications sur les docs officiels Python.À la regard, ça peut être intéressant de regarder,c'est vraiment de la documentation généraliste sur les projets Python,et sur la façon d'écrire les choses en Python.
00:54:56 :Du coup même, entre guillemets, en curiosité intellectuelle,ou même en veille intellectuelle,juste de regarder comment les créateurs Python considèrent qu'un projet devrait être écrit,ou la structuration d'un projet.
00:55:11 :Déjà d'avoir les indications des fondateurs, c'est cool quoi.D'avoir ça donne des bonnes indications de comment faire.Ouais, ouais, c'est sûr.T'as dit qu'on aurait le lien? Je sais pas, je...
00:55:22 :Ouais, ouais, je vais voir avec Tibo.Ouais, je vais voir avec Tibo.Là c'est un fichier chez moi, c'est un Markdown,mais on se débrouillera, je vais voir avec Tibo,on fera un lien, je sais pas si on peut stocker en statique chez lui,sinon je ferai un lien pour partager sur le Discord.
00:55:39 :Et en fait, comme je te posais tout à l'heure la question au tout début,on disait que bon, en termes de débutants, on a pas besoin d'utiliser tous ces programmes là,mais je veux dire, il y a pas un...
00:55:53 :Peut-être que ça n'a rien à voir avec l'information d'aujourd'hui,mais il y a des choses, des...Comment dire?Des plugins à utiliser dès le début ou pas?
00:56:06 :Ouais, ouais, mais tu peux déjà, si tu codes sous VS Code,en particulier sous PyCharm, t'as déjà...Je suis sur VS Code déjà.Ok, et si t'as fait l'installation VS Code pour Python,normalement t'as déjà des indications de style,et de comment écrire les choses, ou...
00:56:21 :Je sais pas, t'as suivi un tuto pour installer tes extensions sur VS Code?Bah ouais, j'ai vraiment juste la formation, c'est un petit peu typo.
00:56:28 :Ouais? Bah il faudrait que je la revoie,mais je pense qu'il vous a fait installer quelques logicielsde formatage de code et d'indication de...Est-ce que c'est bien écrit?
00:56:38 :Est-ce que je suis en train de bien écrire du code Python correct, quoi?Et avec des éditeurs?Ah ouais, ok.T'as pas des trucs genre bariolé en orange ou...
00:56:47 :Des trucs comme ça?Bah en fait, j'ai un peu...Genre, tu sais, quand tu fais une fois d'orthographe,c'est un peu sur le haut rouge, et bah j'ai ça.
00:56:57 :Ah oui, ça c'est du check de vocabulaire, ouais.Mais ok, ça s'appelle du check-spanning,mais c'est pas de ça que je parle.Là je parle vraiment de quelque chose de dédié Python.
00:57:06 :Ouais, ok, du coup je vais voir avec Thibaut,il y a des outils sous VS Code,bon il faut les installer, puisque bon...C'est un truc à faire soi-même.
00:57:15 :Mais il y a quelques extensions installéesqui font pas mal de checks sur le statiqueet sur le formalisme, les PEP par exemple.Sous PyCharm, c'est automatique,comme c'est un éditeur pour Python,eux ils le font directement.
00:57:31 :Donc c'est dans le moteur de PyCharm de l'éditeurque t'as déjà des outils de style.D'accord, ok.Ok, bah c'est pour ça que je me disaispeut-être que j'ai sauté des trucs,peut-être que j'ai pas mis le...
00:57:42 :Non, non, bah j'ai pas regardé toutes les vidéos,donc je regarderai la vidéo.Il me semble qu'il a...Moi j'ai déjà vu des vidéos de Thibautoù il parlait de VS Code et d'extensions,donc je suis sûr qu'il l'a fait dans des vidéos,mais je sais pas ce qu'il a fait dans les vidéos de formation.
00:57:56 :Ok, ok, bon ça je demanderai directement sur le Discordsi il y a des extensions installées sur VS Code.Ouais, par exemple le lien que file Arnaud,c'est ça que j'ai dû voir moi déjà.
00:58:07 :Ah tu vois, ça je l'ai pas,parce que je pense que ça fait pas partiedes fous de la formation il me semble.Ouais, mais après ça c'est des vidéos publiques,donc tu peux...
00:58:14 :Ouais, ouais, bien sûr, bien sûr.Ouais, tu y as accès.C'est sûr, c'est sûr.Mais du coup, je t'incite fortement à installer ces extensions,et ça te donnera des indicationssur comment écrire du code de meilleure qualité,et si t'as pas envie d'écrire,au moins tu le sauras visuellement
00:58:35 :qu'il y a des trucs que tu fais que c'est pas bien,après c'est libre à toi de le faire ou pas.Non, mais c'est cool de savoir ça,parce qu'en vrai vu que j'ai rien,en fait je vois, j'ai ma part de curiosité,je vais à gauche, à droite, je regarde les sites en anglais,
00:58:48 :tout ça, et tout le monde parle de librairie,de plug-in, tout ça,et je me dis, moi j'utilise rien en fait,je viens, je tape mon code,au pire c'est pas bon, il me met en code orthographe.
00:58:59 :Ouais, le niveau zéro de BS Code,il a pas d'intelligence.Et je me dis peut-être qu'il y a un truc que je fais pas bien,et effectivement là si vous me dites que...
00:59:05 :en plus je vois qu'il y en a plusieurs dans le chatqui mettent machin,et puis voilà, je prends la vidéo là.L'éditeur, à chaque langage que tu feras,peut-être tu feras d'autres langages par la suite,non, tu regardes souvent dans ton éditeur préféré,est-ce qu'il y a un support pour le langage,
00:59:18 :et en général t'as le check de syntaxe,et d'autres choses qui tournent autour de ça,pour chacun des langages.C'est bon pour moi.Cool.Du coup il y avait d'autres questions.
00:59:33 :Merci déjà pour la presse, c'est cool.J'ai une question, du coup par rapport à la document,quand tu documentes ton code,est-ce que ça doit t'aider pour le refactoring?
00:59:43 :Ouais, vas-y continue.Moi je sais que j'ai commencé à coder,enfin mon appui il y a deux mois,et je me suis dit, je me souviens plus à quoi ça sert,quand je regardais mon appui, c'était un peu chiant.
00:59:52 :Et toi, ça veut dire par exemple,dès que tu crées ta fonction, un truc comme ça,tu vas la documenter direct avec Undoxing?Ça c'est la théorie, la bonne théorie.
01:00:00 :En pratique, je vais pas mentir,je le fais pas tout le temps.Par contre je le fais, clairement je le faisquand je commence à faire des trucs un peu obscurs,je commence à invoquer des forces mystiques,tout ça, dans mon code,là je me dis, ok, bon,dans une semaine ou dans un mois,
01:00:16 :je regarde ça, je vais pas le comprendre,donc là il faut une documentation.Après, souvent,les docs avec les docs.string, etc,souvent c'est pour de la documentation,par exemple dans mon projet, je fais de la documentation,en général je fais de la documentation dans mon code,et après elle transpire dans ma documentation générée.
01:00:36 :Donc c'est un truc, c'est un donnant-donnant.Je le fais pas pour le faire, pour le fun,en général il y a une motivation derrière,qui est générer de la doc, par exemple.
01:00:45 :Et il y a des conventions aussi,parce que tu peux documenter de trois façons, je crois,t'as les...Ouais, t'as les epitest,t'as NumPy documentation,t'as d'autres trucs, Google, je crois,Google Sheets.
01:01:00 :Tu parles de famille sans forme, dans ton code,parce que tu sais, t'as les 10,tu peux documenter avec des dièses, avec des...Ah oui, ok, d'accord.
01:01:06 :Sur du single line, j'ai tendance à mettre du dièse,sur du multi-line,par exemple au début d'une fonction ou d'une classe,j'utilise les trois cotes pour faire des blocs de documentation,et en général, sur les débuts des fonctions,c'est du triple cote,genre très souvent.
01:01:24 :Après, en documentation dans le code,je crois pas avoir utilisé les triple cotes,j'utilise vraiment en header,en tête de fonction,et après, en général, j'utilise des dièses, des singles.
01:01:39 :Single comment...Après, là, pareil, je sais pas s'il y a des règles de style,ah, c'est une bonne question, faudrait que je regarde.Peut-être dans le Google Style Guide,ils doivent en parler, de la documentation,je sais pas s'il y a des règles de style là-dessus.
01:01:53 :Je viens du monde du VBA,il y avait pas trop de...Enfin, j'ai pas trop de documentation là-dessus non plus,donc je vais vous demander en piston.
01:02:01 :À la rigueur, je regarderai,après coup, je vous dirai par rapport à ça.Ok, merci.De rien.Quelqu'un d'autre, une question, une interrogation?Dans le chat, peut-être.
01:02:25 :Ok.Ok, bon ben, du coup,ah si, Camille qui t'avait un truc, viens.Ah oui, ça peut se diviser, oui, carrément,ça peut être du refactoring,je sais pas s'il est dans les outils que j'ai passés,mais oui, en effet, t'as le PI import,de tête, de mémoirage, il y a ça,
01:02:50 :il y en avait un autre sur le short,enfin le tri d'import.Donc en général, sur les imports,tu distingues les imports de modules internes.
01:03:00 :Enfin, au début, tu prends les libres extérieurs,genre que...Tu peux même distinguer les libres systèmes,donc qui sont sources de systèmes,les libres que t'as installés dans ton virtual-onze.
01:03:11 :Tu peux distinguer aussi tes libres à toi,ou ta structuration,par exemple si t'importes quelque chose de ton propre code.Et après, on a ce qu'on appelle les whitelists,où tu peux dire des exceptions,tu peux séparer des blocs,genre des blocs d'import spécifiques.
01:03:29 :Tu peux dire, à cette librairie, par exemple,je dis que j'ai envie qu'elle soit dans un bloc différent.Je sais pas, je pense que c'est de ça que tu parles.
01:03:37 :Mais en général, les trois blocs, c'est librairie externe,librairie whitelist,et ta structuration de projet interne.Après, il y a des conventions, d'ailleurs,et c'est le guide sur l'import relatif et l'import absolu.
01:03:55 :J'aurais pu en parler, oui, aussi, sur les imports,c'est une bonne remarque, ouais.Faudrait que je rajoute sur l'écriture des imports.Il y a deux façons de faire un import,tu peux le faire en statique ou en absolu.
01:04:06 :Relativement à ton projet.Et du coup, il y a des recommandations dans Google,c'est quasi sûr qu'ils doivent en parler,sur comment faire tes imports,est-ce que tu peux utiliser le relatif des fois ou pas.
01:04:17 :Après, je sais pas si ça vous parle,ce dont je parle, sur les imports relatifs et absolus.Je pense que c'est des trucs dans les concepts de base Python,mais j'en suis pas certain.
01:04:33 :Pareil, la stratégie d'import,elle est aussi liée à la structuration du projet.Selon comment on structure son projet,on fera différemment les imports.Ok, attends.
01:04:45 :Tu vas le voir assez vite, les imports,pour l'instant tu fais des imports classiques,genre une librairie, tu fais un import,tu fais un from d'une librairie,import un module ou une fonction,et bientôt tu feras du...
01:04:59 :En fait, quand tu écris plusieurs imports,en fait, quand tu écris plusieurs,dans un projet, quand tu écris plusieurs scripts,du coup tu peux les référencer entre eux,et tu peux, par exemple, séparer les utilitaires du fonctionnel,et du coup tu dois faire de l'import relatif,ou de l'import de module interne,
01:05:14 :de toi, ce que tu as écrit,et du coup tu commences à te poser la questionde comment tu écris tes imports.Là, peut-être, actuellement, tu te poses la question,parce que tu dois être sur ce qu'on appelle des single scripts,c'est-à-dire juste un script qui fait quelque chose.
01:05:29 :Tu le verras assez rapidementquand tu devras faire des découpages en plusieurs fichiers.C'est PyCharm qui le gère automatiquement, non?J'avoue, je suis galère.Oui, tu as des propositions de PyCharm,tu as des conventions.
01:05:43 :PyCharm a ses conventions, d'ailleurs,elles sont discutables,il y a d'autres types de conventions, de styles,mais PyCharm te propose de l'auto-import,ce qu'on appelle,d'auto-importer ce que tu as besoin.
01:05:59 :Yes.Du coup, chaque chose, en son temps,commence par les bases,et tu verras, ça arrivera assez rapidement.Une dernière question, peut-être?D'ailleurs, je vais le noter,il faut que je parle des imports.
01:06:22 :C'est vraiment fort, Copilot!Ok, on va terminer, ça fait un peu plus d'une heure.Je vous remercie d'être venuet d'avoir suivi ce mentorat.Du coup, moi je suis Lionel Lati,sur le disque earned,je dois être YoYonel,et je vais vous parler de l'automne,de l'automne, de l'automne,
01:07:02 :de l'automne, de l'automne,sur le disque earned, je dois être YoYonel.Ouais, YoYonel.Du coup, si vous avez des questionspar rapport à ça,de préférence autour de ces thématiques,venez me voir directement.
01:07:17 :Si vous avez d'autres questions à la rigueur,et que vous pensez que j'ai une expertise dessus,n'hésitez pas à venir toquer à ma porte,je répondrai avec plaisir.
01:07:25 :Après, en général, utilisez plutôtle disque earned général,ou piton, si c'est des questions générales.Après, sur les mentorats,et en général sur les sujets que j'évoque dans les mentorats,moi j'aime bien, enfin, c'est des choses que j'aime bien,c'est du métier passion quoi, entre guillemets,donc j'aime bien en parler,
01:07:42 :j'aime bien discuter, avancer avec les autressur ces sujets, et en plus c'est un cheminement,en fait, on n'a pas une connaissance absolue,enfin personne n'a une connaissance absoluesur les choses, on avance versune connaissance profondeet précisesur les concepts,donc c'est aussi un cheminement, moi, de vous expliquer,
01:08:00 :et même d'en parler après avec vous,ça m'aide à m'aller, en vous aidantà progresser, moi aussi ça m'aideà progresser.Donc c'est du donnant-donnant,l'économie, je ne sais plus, ça avait un nom,l'économie du savoir, et le fait dele 1 plus 1, ça faitlimite 3 quoi.
01:08:18 :On gagne, on crée de la richesseen communiquant et en transmettant.Donc n'hésitez pasà revenir vers moi.Etje pense que c'est tout.Ok, cool.
01:08:36 :Donc voilà, bon,j'ai arrêté la vidéo.Et ouais,revenez vers moi, même à la rigueur,si vous avez des retours surdes choses que vous auriez aiméesque je parle.
01:08:52 :Tiens, Lionel Inconnu, on a le même prénom.Lionel.Ou même des formulations sur des chosespeut-être trop techniquesà certains endroits, ou pas assez précis à d'autres,ou trop... Il y a toujours cette oscillation
01:09:04 :entre le macro et le micro,c'est-à-dire d'être trop...une vue survoléeet une vue trop précise des fois.Donc si vous avez des retours, un peu de tempslà-dessus, moi je prends avec plaisirdes retourssur la forme et sur le fond,même sur le... ouais, sur la forme et le fond d'ailleurs.
Aucune occurrence trouvée pour « ».