view this page in english

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)