Projet

Général

Profil

Convention redaction de script » Historique » Version 12

Julien Enselme, 03/08/2013 21:32
Import, Les fonctions de contrôle

1 8 Julien Enselme
Auparavant les scripts n'étaient pas rédigés suivant une convention commune à chacun. Ce qui fait que l'entretien de ces derniers pouvait se révéler compliqué. Le but de cette convention est d'harmoniser l'écriture des scripts afin de les rendre plus lisibles, et plus faciles à entretenir.
2 1 Florent Torregrosa
3 4 Julien Enselme
{{>toc}}
4 1 Florent Torregrosa
5 9 Julien Enselme
h1. Nommage
6 1 Florent Torregrosa
7 1 Florent Torregrosa
Pour les noms de scripts :
8 3 Julien Enselme
9 4 Julien Enselme
* Nom du script en anglais
10 4 Julien Enselme
* Mettre des @-@ à la place des @_@ car les scripts du dossier scripts de Drupal sont nommés comme ça.
11 4 Julien Enselme
* Mettre l'extension à la fin (exemple : .sh)
12 3 Julien Enselme
13 4 Julien Enselme
 * Pour avoir la coloration syntaxique automatique
14 1 Florent Torregrosa
 * Drupal se base sur les extensions pour poster les fichiers. Et s’il n’y en a pas, il refusera de le poster.
15 4 Julien Enselme
 * Cela permet de se rappeler que l'on utilise un script
16 1 Florent Torregrosa
17 4 Julien Enselme
* Faire des noms parlant et descriptif (quitte à ce qu'il soit long), exemple :
18 2 Julien Enselme
19 3 Julien Enselme
 * maj_d7.sh -> update-all-d7-contributed-modules.sh ou update-contributed-modules-all-d7.sh
20 2 Julien Enselme
 * captcha.sh -> force-all-d7-captcha-activation.sh ou force-captcha-activation-all-d7.sh
21 2 Julien Enselme
22 1 Florent Torregrosa
Des noms de scripts avec des diminutifs de noms ou des acronymes peuvent être utilisés mais ils doivent être documentés et il faut en informer l'équipe, exemple :
23 4 Julien Enselme
24 1 Florent Torregrosa
* d7 : pour la version Drupal cible du module
25 7 Florent Torregrosa
* all : pour tous les sites d'une version, si non précisé sous-entend que le script n'affecte qu'un site
26 1 Florent Torregrosa
27 7 Florent Torregrosa
Ces diminutifs et acronymes doivent être mis de préférence en début de nom, une exception peut être faite si le diminutif s'insére bien dans le nom du script, exemple d'un script de Drupal : generate-d7-content.sh
28 7 Florent Torregrosa
29 9 Julien Enselme
h1. Ordre des diminutifs
30 7 Florent Torregrosa
31 7 Florent Torregrosa
Les diminutifs doivent être placés dans l'ordre suivant :
32 7 Florent Torregrosa
33 7 Florent Torregrosa
* Version de Drupal : dx
34 7 Florent Torregrosa
* Affecte tous les sites ou non : all
35 7 Florent Torregrosa
* Autre ...
36 1 Florent Torregrosa
37 9 Julien Enselme
h2. Renommage d'un script
38 1 Florent Torregrosa
39 1 Florent Torregrosa
En cas de renommage d'un script, il faut vérifier :
40 4 Julien Enselme
* Les dépendances de scripts entre eux (voir le fichier les listant)
41 4 Julien Enselme
* Le crontab
42 1 Florent Torregrosa
43 9 Julien Enselme
h1. Rédaction
44 1 Florent Torregrosa
45 4 Julien Enselme
* Une ligne = une action, si une ligne fait plus qu'une action cela devient dur à lire. Si la ligne a vraiment besoin de faire plus qu'une action, mettre un commentaire avant.
46 4 Julien Enselme
* Ne pas répéter le code, ou alors un minimum.
47 4 Julien Enselme
* Mettre toutes les variables/fonctions communes à plusieurs scripts dans des fichiers à part qu’on importe
48 1 Florent Torregrosa
49 9 Julien Enselme
h2. Les commentaires
50 1 Florent Torregrosa
51 1 Florent Torregrosa
* Les commentaires sont en anglais (langage des programmeurs et pas de problème d'accents selon l'éditeur utilisé).
52 11 Florent Torregrosa
* Ne pas coller les commentaires au symbole de commentaire, exemple à suivre : # Comment.
53 1 Florent Torregrosa
54 9 Julien Enselme
h2. Les variables
55 1 Florent Torregrosa
56 4 Julien Enselme
* Les variables sont en anglais (langage des programmeurs et pas de problème d'accents selon l'éditeur utilisé).
57 10 Florent Torregrosa
* Emploi des underscores pour séparer les mots dans le nom de la variable
58 10 Florent Torregrosa
* Ne pas avoir peur de donner des noms longs aux variables (d'autant que les éditeurs digne de ce nom dispose de l'autocomplétion), il faut que le lecteur sache spontanément en lisant le nom de la variable, son type et son utilité, exemple :
59 1 Florent Torregrosa
60 1 Florent Torregrosa
 * madate -> my_date -> current_date (si fait pour utiliser la date actuelle)
61 1 Florent Torregrosa
62 4 Julien Enselme
* Les variables de chemin doivent être placées en début de script (plus tard factorisation)
63 1 Florent Torregrosa
64 12 Julien Enselme
h2. Les imports
65 12 Julien Enselme
66 12 Julien Enselme
Les imports se font en début de script, avant le commentaire de description de site.
67 12 Julien Enselme
68 12 Julien Enselme
h2. Les fonctions de contrôle
69 12 Julien Enselme
70 12 Julien Enselme
Les fonctions de contrôle se placent après le commentaire de description de site.
71 12 Julien Enselme
72 9 Julien Enselme
h2. Ne pas faire
73 1 Florent Torregrosa
74 4 Julien Enselme
Ne pas : mettre son nom, la date et le commentaire qui dit ce que fait le script dans le script car
75 1 Florent Torregrosa
76 4 Julien Enselme
* La date laisse penser que le script est parfois vieux
77 4 Julien Enselme
* Comme on a pas envie de modifier cet en-tête, le commentaire d'explication de ce que fait le script n'est pas mis à jour
78 4 Julien Enselme
* Ça donne l'impression que le script appartient à cette personne et ne donne pas envie de le modifier (on peut s'imaginer que c'est le script de la personne et que donc c'est à elle à l'entretenir)
79 4 Julien Enselme
* Le nom du script doit de lui-même indiqué ce que le script fait
80 4 Julien Enselme
* Pour la date et les modification, il y a git
81 4 Julien Enselme
* Pour la reconnaissance du travail des personnes -> type de contenus "membre" sur default et/ou s'il le faut une page dédiée aux contributions de chacun sur default
82 4 Julien Enselme
83 9 Julien Enselme
h1. Plus généralement
84 1 Florent Torregrosa
85 4 Julien Enselme
Plus généralement, suivre le clean code :
86 4 Julien Enselme
87 4 Julien Enselme
* En anglais : http://www.e-reading-lib.com/bookreader.php/134601/Clean_Code_-_A_Handbook_of_Agile_Software_Craftsmanship.pdf