Convention redaction de script » Historique » Version 15
Julien Enselme, 14/10/2014 20:52
Mise à jour.
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 | Pour les noms de scripts : |
||
8 | 3 | Julien Enselme | |
9 | 4 | Julien Enselme | * Nom du script en anglais |
10 | * Mettre des @-@ à la place des @_@ car les scripts du dossier scripts de Drupal sont nommés comme ça. |
||
11 | * 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 | |||
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 | |||
29 | 13 | Julien Enselme | h2. Ordre des diminutifs |
30 | 7 | Florent Torregrosa | |
31 | Les diminutifs doivent être placés dans l'ordre suivant : |
||
32 | |||
33 | * Version de Drupal : dx |
||
34 | * Affecte tous les sites ou non : all |
||
35 | * Autre ... |
||
36 | 1 | Florent Torregrosa | |
37 | 9 | Julien Enselme | h2. Renommage d'un script |
38 | 1 | Florent Torregrosa | |
39 | 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 | * 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 | * Ne pas répéter le code, ou alors un minimum. |
||
47 | * 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 | * 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 | * 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 | 15 | Julien Enselme | ** madate -> my_date -> current_date (si fait pour utiliser la date actuelle) |
60 | * Les variables doivent doivent toujours être entre guillements doubles (ie "$var"). Cela évite des éventuels problème de gestion des espaces, par exemple @cd $dir@ peut poser problème si @dir="Ping Pong"@ tandis que @cd "$dir"@ est correct. |
||
61 | * Les variables (hors paramètres positionnels) s'utilisent entre accolades, eg @${ma_var}@. Améliore la lisibilité. |
||
62 | 1 | Florent Torregrosa | |
63 | 15 | Julien Enselme | h2. Les commandes |
64 | |||
65 | * Les substitutions de commande s'écrivent avec la syntaxe $(…) et sont entre guillemets, eg @"$(ls)"@. Même raison que précédemment. De plus, la syntaxe $(…) permet d'empiler des commandes, eg @$(ls $(ls ~))@ ou mieux : @"$(ls "$(ls)")"@ (les guillements n'ont pas besoin d'être échappés car ce qui est entre $(…) est parsé comme si c'était sur une ligne de l'interpréteur) |
||
66 | 1 | Florent Torregrosa | |
67 | 12 | Julien Enselme | h2. Les imports |
68 | |||
69 | Les imports se font en début de script, avant le commentaire de description de site. |
||
70 | |||
71 | h2. Les fonctions de contrôle |
||
72 | |||
73 | Les fonctions de contrôle se placent après le commentaire de description de site. |
||
74 | |||
75 | 9 | Julien Enselme | h2. Ne pas faire |
76 | 1 | Florent Torregrosa | |
77 | 4 | Julien Enselme | Ne pas : mettre son nom, la date et le commentaire qui dit ce que fait le script dans le script car |
78 | 1 | Florent Torregrosa | |
79 | 4 | Julien Enselme | * La date laisse penser que le script est parfois vieux |
80 | * 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 |
||
81 | * Ç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) |
||
82 | * Le nom du script doit de lui-même indiqué ce que le script fait |
||
83 | * Pour la date et les modification, il y a git |
||
84 | * 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 |
||
85 | |||
86 | 9 | Julien Enselme | h1. Plus généralement |
87 | 1 | Florent Torregrosa | |
88 | 4 | Julien Enselme | Plus généralement, suivre le clean code : |
89 | 1 | Florent Torregrosa | |
90 | 4 | Julien Enselme | * En anglais : http://www.e-reading-lib.com/bookreader.php/134601/Clean_Code_-_A_Handbook_of_Agile_Software_Craftsmanship.pdf |
91 | 14 | Julien Enselme | * Quelques règles de style (en anglais). *Certains points ne s’appliquent qu’à bash* : http://google-styleguide.googlecode.com/svn/trunk/shell.xml |