====== Bonnes pratiques ======
===== Duck typing =====
La l'oie du canard: //If it looks like a duck and quacks like a duck, it must be a duck.//
Dans la majorité des cas il importe peu que l'objet soit une instance d'un type particulier, on cherche à savoir s'il a le bon comportement. On privilégiera donc l'emploie de **hasattr()** au lieu de **isinstance()**.
===== Mise en forme =====
Limiter la longueur des lignes à 80 caractères. En python tout ce qui est entre parenthèses, crochets ou accolades supporte le retour à la ligne sans créer de problème dans la syntaxe python.
**L'indentation est primordiale car elle participe à la syntaxe**: elle délimite les blocs d'instructions. Par convention chaque niveau d'indentation est de 4 caractères espace.
Cet usage syntaxique de l' indentation peut paraître déconcertant pour ceux connaissent d'autres langages puisqu'en général les syntaxes des langages sont conçues de manière à être insensibles aux espaces et à la présentation.
===== Conventions d'usage =====
Non obligatoires mais fortement recommandées pour s'assurer de la lisibilité et de l’homogénéité du code produit respectant les bonnes pratiques mises en avant dans les modules standards.
# aérer affectations et opérations
x = y + z
#définition de fonction
def ma_fonction(x, y, z):
# appel de fonction avec de nombreux arguments
x = ma_fonction_avec_un_nom_log(
arg1, arg2,
arg3, arg4,
)
Quand c'est nécessaire, le backslash permet d'échapper le caractère de retour à la ligne et de répartir l'instruction sur plusieurs lignes. Lorsqu' une instruction est répartie sur plusieurs lignes, c'est naturellement l'indentation de la première ligne qui est significative pour savoir à quel bloc rattacher cette instruction.
L'outil pep8 permet de vérifier si le code produit est conforme à la PEP0008.
===== Documentation =====
Python à un mécanisme interne permettant d'intégrer la documentation au code. Utiliser les doc-strings (triples apostrophes) pour produire la documentation directement dans le code et la rendre disponible dans l'interpréteur.
===== getters/setters =====
Intégrer les getters/setters avec la méthode **property** afin de faciliter l'utilisation
===== Indices =====
Vous devez toujours garder en tête qu'il est rare en Python de manipuler des indices. Dès que vous voyez des indices dans votre code, vous devez vous demander si votre code est "pythonique".
===== Références =====
* http://www.fil.univ-lille1.fr/~marvie/python/chapitre3.html
* http://python-guide.readthedocs.org/en/latest/