Quelques règles à suivre lorsque l'on codouze sur PycaWM
- Règle la plus importante : respecter la PEP 8 !
- Pas de tabulations ! Utiliser 4 espaces pour un niveau d'indentation
- Mettre les noms de classes en CamelCase
- Mettre les noms de fonctions et de méthodes en minuscules_avec_des_underscores
- Les lignes ne doivent pas faire plus de 80 caractères
- Utiliser les guillemets simples pour les chaînes de caractères classiques et trois guillemets doubles pour les docstrings
Bon:
'c\'est une chaîne de caractère classique' """c'est une docstring"""
Mauvais:
"c'est une chaîne de caractère classique" '''c'est une docstring'''
- Utiliser le nouveau style de classe (i.e. celles qui héritent de la classe object)
- PycaWM a besoin d'au moins python2.5, donc vous pouvez utiliser toutes les nouvelles fonctionnalités (comme l'opérateur ternaire, le mot clef 'with', ...)
- Pas de variables globales (sauf si vous en avez VRAIMENT besoin)
- Si vous n'avez pas besoin de l'instance (self), utilisez une méthode de classe plutôt qu'une méthode d'instance
- Si vous n'avez pas besoin de la classe (cls), utilisez une méthode statique plutôt qu'une méthode de classe
- Éviter les espaces inutiles autant que possible (en fin de ligne, ou sur des lignes vides par exemple)
- Il ne doit pas y avoir d'espace avant le « : » d'une fonction anonyme
Bon:
lambda wm, x, y: wm.move_pointer(x, y)
Mauvais:
lambda wm, x, y : wm.move_pointer(x, y)
- Pas de « \ » dans la condition d'un test (utilisez des parenthèses à la place)
Bon:
if (self.x < 42 and self.y > 84 and
self.states.iconified):
pass
Mauvais:
if self.x < 42 and self.y > 84 and \
self.states.iconified:
pass
- Quand on scinde une expression, il faut faire attention à toujours mettre l'opérateur à la fin de la ligne
Bon:
if (self.x < 42 and self.y > 84 and
self.states.iconified):
pass
Mauvais:
if (self.x < 42 and self.y > 84
and self.states.iconified):
pass
- Utiliser list() pour créer une liste vide (plutôt que [])
- Utiliser dict() pour créer un dictionnaire vide (plutôt que {})
- Les docstrings et les commentaires sont une bonne chose (spécialement les docstrings) (peut-être devrions-nous appliquer cette règle un peu plus dans PycaWM...)
- Les générateurs c'est bien (notamment dans les boucles for) (par exemple utiliser xrange au lieu de range)
- Les fonctionnalités avancées de python (les descripteurs, les décorateurs, les métaclasses, ...) roxorisent, vous pouvez les utiliser (si elles vous sont utiles pour votre problème)
- Limiter l'usage du monkey-patching (PycaWM a un système de hook pour modifier les fonctions et les méthodes pendant l'exécution, n'utilisez donc que ce système, merci)
- Utiliser un éditeur de texte intelligent (avec un bon mode python) (comme emacs)
