Documentation Moodle : Directives pour la programmation
Directives pour la programmation
Tout projet où l'on travaille en collaboration
nécessite une cohérence et une stabilité fortes.
L'objectif de ces directives est de
fournir un cadre à respecter pour tout le code de Moodle. Il
est vrai que certaines parties plus anciennes du code ne
les respectent pas toujours ; le code sera corrigé. Tout le
nouveau code doit absolument respecter ces directives
aussi précisément que possible.
Règles générales
Tous les fichiers contenant du code doivent
avoir l'extension .php.
Tous les fichiers modèles doivent avoir
l'extension .html.
Tous les fichiers textes doivent être ne
format texte Unix (la plupart des éditeurs de texte
permettent cela).
Toutes les balises php doivent être
en forme complète, par exemple <?php
... ?> et non en forme abrégée comme
<? ... ?>.
Toutes les indications de copyright doivent
être conservée. Vous pouvez ajouter les vôtres au besoin.
Tous les fichiers doivent inclure le
fichier config.php principal.
Tous les fichiers doivent vérifier que
l'utilisateur est correctement authentifié, à l'aide de require_login()
et d'une des fonctions isadmin(), isteacher(), iscreator() ou isstudent().
Tous les accès aux bases de données doivent
autant que possible utiliser les fonctions définies dans
lib/datalib.php. Ceci permet la compatibilité avec un grand
nombre de marques de bases de données. Il est possible de
faire presque tout avec ces fonctions. Si vous devez écrire du code SQL,
assurez-vous qu'il soit : multi-plateforme, restreint à des fonctions
spécifiques de votre code (habituellement placés dans un fichier lib.php)
et clairement marqué.
Ne créez et n'utilisez aucune variable locale,
sauf les variables standard $CFG, $SESSION, $THEME et $USER.
Toutes les variables doivent être initialisées
ou au moins leur existence doit être testée avec isset() ou
empty() avant leur utilisation.
Toutes les chaînes de caractères doivent
être traductibles. Placez-les dans des fichiers de « lang/en » et
appelez-les avec les fonctions get_string() ou print_string().
Tous les fichiers d'aide doivent être
traductibles. Créez-les dans le dossier « lang/en/help » et
appelez-les avec la fonction helpbutton().
Style du code
Je suis conscient qu'il est ennuyeux de changer
votre style si vous avez d'autres habitudes, mais comparez cet embêtement
avec les gros ennuis qu'ont ultérieurement les personnes qui
essaient de comprendre un code composé avec des styles différents. Bien
sûr il y a des avantages et des inconvénients à n'importe quel style,
mais le style de Moodle existe, alors tenez-vous y,
s'il vous plaît.
L'indentation doit être
de 4 espaces. N'utiliser pas DU TOUT de tabulations.
Les noms des variables doivent toujours
être des mots anglais faciles à lire, ayant une signification claire et
en minuscules. Si vous avez vraiment besoin de plusieurs mots,
concaténez-les, mais gardez-les aussi courts que possible.
Utilisez des noms au pluriel pour les tableaux d'objets.
BON : $quiz
BON : $errorstring
BON : $assignments (pour un tableau d'objets)
BON : $i (mais seulement dans de petites boucles)
MAUVAIS : $Quiz
MAUVAIS : $aReallyLongVariableNameWithoutAGoodReason
MAUVAIS : $error_string
Les noms des constantes doivent toujours
être en majuscules, et toujours commencer par le nom du module. Les
mots qui les constituent doivent être séparés par des
caractères « souligné » (underscore).
define("FORUM_MODE_FLATOLDEST",
1);
Les noms des fonctions doivent être de
simples mots anglais, et commencent avec le nom du module pour
éviter les conflits entre modules. Les mots qui les constituent
doivent être séparés par des caractères « souligné » (underscore).
Les paramètres doivent avoir si possible une valeur par défaut
sensée. On ne place pas d'espace entre le nom de la fonction et
la suite (parenthèses)
function forum_set_display_mode($mode=0)
{
global $USER,
$CFG;
if ($mode)
{
$USER->mode
= $mode;
} else if (empty($USER->mode))
{
$USER->mode
= $CFG->forum_displaymode;
}
}
Les blocs doivent toujours être
placés entre accolades (même s'ils ne sont constitués que d'une ligne).
Moodle utilise le style suivant :
if ($quiz->attempts)
{
if ($numattempts >
$quiz->attempts)
{
error($strtoomanyattempts,
"view.php?id=$cm->id");
}
}
Les chaînes de caractères
doivent être définies avec des apostrophes droites (pas des
guillemets) lorsque c'est possible, afin d'améliorer les performances.
$var = 'some text without any
variables';
$var = "with special characters like a new line \n";
$var = 'a very, very long string with a '.$single.' variable in it';
$var = "some $text with $many variables $within it";
Les commentaires doivent utiliser
deux ou trois barres obliques et être alignés avec le code.
function forum_get_ratings_mean($postid,
$scale, $ratings=NULL)
{
/// Return the mean rating of a post given
to the current user by others.
/// Scale is an array of possible ratings in the scale
/// Ratings is an optional simple array of actual ratings (just integers)
if (!$ratings)
{
$ratings
= array(); //
Initialize the empty array
if ($rates
= get_records("forum_ratings",
"post", $postid))
{
//
Process each rating in turn
foreach
($rates as $rate)
{
... etc.
Les espaces doivent être
utilisés généreusement. N'ayez pas peur d'espacer les lignes pour
accroître la lisibilité. En général, il doit y avoir un espace
entre les parenthèses et les instructions normales, mais aucun
espace entre les parenthèses et les variables ou fonctions :
foreach ($objects
as $key =>
$thing) {
process($thing);
}
if ($x ==
$y)
{
$a
= $b;
} else if ($x ==
$z) {
$a
= $c;
} else {
$a
= $d;
}
Structure des bases de données
Toutes les tables doit avoir un champ id
(INT10) à incrémentation automatique pour index principal.
La table principale contenant les instances
de chaque module doit avoir le même nom que le module (par exemple
bidule) et doit contenir au moins les champs
suivants :
id - voir description ci-dessus
course - l'identifiant du cours auquel appartient
chaque instance
name - le nom complet de chaque instance du module
Les autres tables associées à un module et contenant
des informations sur des « choses » doivent être appelées
bidule_choses (remarquez le pluriel).
Les noms de colonnes doivent être simples et brefs,
suivant les mêmes règles que les noms des variables.
Si possible, les colonnes faisant référence
au champ id d'une autre table (par exemple bidule)
doivent être appelées widgetid. (Remarquez que cette
convention est nouvelle, et n'a pas été suivie dans
certaines tables plus anciennes.)
Les champs booléens doivent être
implémentés comme des entiers petits (par exemple INT4)
contenant 0 ou 1, afin de permettre une éventuelle extension
des valeurs si nécessaire.
La plupart des tables doivent avoir une champ
timemodified (INT10) qui soit mis à jour
avec la date et l'heure obtenue avec la fonction PHP
time().
Documentation Moodle
Version: $Id$
Wyszukiwarka
Podobne podstrony:
C Coding Techniques for Intel Architecture ProcessorscodingstandardsTworzenie Coding profil NCSEXPERTCodingStyle (3)CodingErrorActioncodingBash Style Guide an Coding Standard [EN]codingcodingcodingcoding guidelinescoding03 Coding Plug05d Coding and Programmingcodingcoding coding programmingcoding guidelinescodingwięcej podobnych podstron