gwift-book/source/part-1-workspace/environment/_index.adoc

8.2 KiB
Raw Blame History

Boite à outils

Python

Le langage Python est un langage de programmation interprété, interactif, orienté objet (souvent), fonctionnel (parfois), open source, multi-plateformes, flexible, facile à apprendre et difficile à maîtriser.

A première vue, certains concepts restent difficiles à aborder: lindentation définit létendue dun bloc (classe, fonction, méthode, boucle, condition, …​), il ny a pas de typage fort des variables et le compilateur nest pas là pour assurer le filet de sécurité avant la mise en production (puisquil ny a pas de compilateur 😛). Et malgré ces quelques points, Python reste un langage généraliste accessible et "bon partout", et de pouvoir se reposer sur un écosystème stable et fonctionnel.

Il fonctionne avec un système daméliorations basées sur des propositions: les PEP, ou "Python Enhancement Proposal". Chacune dentre elles doit être approuvée par le Benevolent Dictator For Life.

PEP8 - Style Guide for Python Code

La première PEP qui va nous intéresser est la PEP 8Style Guide for Python Code. Elle spécifie comment du code Python doit être organisé ou formaté, quelles sont les conventions pour lindentation, le nommage des variables et des classes, …​ En bref, elle décrit comment écrire du code proprement, afin que dautres développeurs puissent le reprendre facilement, ou simplement que votre base de code ne dérive lentement vers un seuil de non-maintenabilité.

Dans cet objectif, un outil existe et listera lensemble des conventions qui ne sont pas correctement suivies dans votre projet: pep8. Pour linstaller, passez par pip. Lancez ensuite la commande pep8 suivie du chemin à analyser (., le nom dun répertoire, le nom dun fichier .py, …​). Si vous souhaitez uniquement avoir le nombre derreur de chaque type, saisissez les options --statistics -qq.

$ pep8 . --statistics -qq

7       E101 indentation contains mixed spaces and tabs
6       E122 continuation line missing indentation or outdented
8       E127 continuation line over-indented for visual indent
23      E128 continuation line under-indented for visual indent
3       E131 continuation line unaligned for hanging indent
12      E201 whitespace after '{'
13      E202 whitespace before '}'
86      E203 whitespace before ':'

Si vous ne voulez pas être dérangé sur votre manière de coder, et que vous voulez juste avoir un retour sur une analyse de votre code, essayez pyflakes: cette librairie analysera vos sources à la recherche de sources derreurs possibles (imports inutilisés, méthodes inconnues, etc.).

Il existe une solution qui couvre ces deux domaines: flake8. Sur base de la même interface que pep8, vous rencontreez en plus tous les avantages liés à pyflakes

PEP257

Note
à remplir avec pydocstyle.
Note
parler de Napoleon.

Environnement de développement

Concrètement, nous pourrions tout à fait nous limiter à Notepad ou Notepad++. Mais à moins daimer se fouetter avec un câble USB, nous apprécions la complétion du code, la coloration syntaxique, lintégration des tests unitaires et dun debugger, ainsi que deux-trois sucreries qui feront plaisir à nimporte quel développeur.

Si vous manquez didées ou si vous ne savez pas par où commencer:

Si vous hésitez, et même si Codium nest pas le plus léger (la faute à Electron…​), il fera correctement son travail (à savoir: faciliter le vôtre), en intégrant suffisament de fonctionnalités qui gâteront les papilles émoustillées du développeur impatient.

codium
Figure 2. Codium en action

Un terminal

A priori, les IDE [1] proposés ci-dessus fournissent par défaut ou via des greffons un terminal intégré. Ceci dit, disposer dun terminal séparé facilite parfois certaines tâches.

A nouveau, si vous manquez didées:

  1. Si vous êtes sous Windows, téléchargez une copie de Cmder. Il nest pas le plus rapide, mais propose une intégration des outils Unix communs (ls, pwd, grep, ssh, git, …​) sans trop se fouler.

  2. Pour tout autre système, vous devriez disposer en natif de ce quil faut.

terminal
Figure 3. Mise en abîme

Un gestionnaire de base de données

Django gère plusieurs moteurs de base de données. Certains sont gérés nativement par Django (PostgreSQL, MariaDB, SQLite); a priori, ces trois-là sont disponibles pour tous les systèmes dexploitation. Dautres moteurs nécessitent des librairies tierces (Oracle, Microsoft SQL Server).

Il nest pas obligatoire de disposer dune application de gestion pour ces moteurs: pour les cas dutilisation simples, le shell Django pourra largement suffire (nous y reviendrons). Mais pour faciliter la gestion des bases de données elles-même, et si vous nêtes pas à laise avec la ligne de commande, choisissez lune des applications dadministration ci-dessous en fonction du moteur de base de données que vous souhaitez utiliser.

Un gestionnaire de mots de passe

Nous en auront besoin pour gé(né)rer des phrases secrètes pour nos applications. Si vous nen utilisez pas déjà un, partez sur KeepassXC: il est multi-plateformes, suivi et sintègre correctement aux différents environnements, tout en restant accessible.

keepass

Un système de gestion de versions

Il existe plusieurs systèmes de gestion de versions. Le plus connu à lheure actuelle est Git, notamment pour sa (très) grande flexibilité et sa rapidité dexécution. Il est une aide précieuse pour développer rapidement des preuves de concept, switcher vers une nouvelle fonctionnalité, un bogue à réparer ou une nouvelle release à proposer au téléchargement. Ses deux plus gros défauts concerneraient peut-être sa courbe dapprentissage pour les nouveaux venus et la complexité des actions quil permet de réaliser.

Même pour un développeur solitaire, un système de gestion de versions (quel quil soit) reste indispensable.

Chaque "branche" correspond à une tâche à réaliser: un bogue à corriger (Hotfix A), une nouvelle fonctionnalité à ajouter ou un "truc à essayer" [2] (Feature A et Feature B). De cette manière, il est beaucoup plus facile pour le développeur de se concenter sur un sujet en particulier, dans la mesure où ce sujet ne doit pas obligatoirement être clôturé pour changer de contexte.

git
Figure 5. Git en action

Cas pratique: vous développez cette nouvelle fonctionnalité qui va révolutionner le monde de demain et daprès-demain, quand, tout à coup (!), vous vous rendez compte que vous avez perdu votre conformité aux normes PCI parce les données des titulaires de cartes ne sont pas isolées correctement. Il suffit alors de sauver le travail en cours, revenir sur la branche principale, créer un "hotfix", solutionner le problème, pousser le correctif sur la branche principal, et revenir tranquillou sur votre branche de développement pour fignoler ce générateur de noms de dinosaures rigolos que lunivers vous réclame à cor et à a cri.


1. Integrated Development Environment
2. Oui, comme dans "Attends, jessaie vite un truc, si ça marche, cest beau."