Carnet Wiki

ProgrammerEtDeboguer

Des commentaires :



Programmer avec Spip se révèle déconcertant pour certains, qu’ils soient novices en programmation, ou expérimentés avec d’autres façons de programmer.

Cette page a pour objectif de faciliter la tâche de tous, par un échange des meilleures pratiques.

Difficultés avec Spip

Un des avantages de Spip est d’obtenir un code efficace et compact. Et lisible, “visuel” quand on en a l’habitude.
C’est aussi un de ses inconvénients, quand on commence à programmer avec Spip !

Car une difficulté importante à la compréhension de Spip est liée au fait qu’un critère peut être “muet” ou non, avec la même notation : {id_article} peut servir à repérer l’article en cours (résultat d’une boucle (ARTICLES) au-dessus) ; ou bien à parcourir la base à la recherche des articles et identifier l’article courant.
C’est à dire que {id_article} peut avoir été déterminé avant la boucle en cours (et donc avoir une seule et même valeur dans la boucle en cours), ou au contraire être un indice (variable) de cette boucle en cours...

Comment programmer ?
-  Utiliser largement les commentaires
Une façon intéressante est de mettre des commentaires assez largement, au moins au début.

Au delà d’une meilleure compréhension du code, y compris quand on a un peu oublié ce qu’on voulait faire et ce qui marche / ne marche pas encore, cela facilite aussi le débogage : quand on “affiche le source” d’une page Web créée avec Spip, les commentaires restent imprimés, ce qui permet de bien voir le fonctionnement du code écrit.

Une fois que le code est validé, il est possible d’enlever et/ou de simplifier les commentaires. Dans ce cas, rien ne vous empêche de garder une version très commentée de votre code, dans le répertoire qui stocke votre code en cours :
par exemple avec un numéro de version : article118.html (version 1.18 de votre code article.html)

-  tout en gardant une trace des évolutions du code, dans des répertoires ayant des noms clairs (version)
La version téléchargée vers le serveur sera bien sûr article.html, qui sera également dans ce “répertoire courant”, répertoire qui pourra d’ailleurs s’appeler “v118” pour faciliter le classement des évolutions du code.
Ce qui présente aussi l’avantage de tracer chaque version.
A chaque version “stabilisée”, vous faites le ménage dans les commentaires, et donc dans le code article.html, sans enlever les commentaires importants dans article118.html

Précautions, points à vérifier
-  ne pas oublier de répéter {id_article} ou de le mettre, dans le cas d’une boucle emboitée dans une première.
-  bien vérifier que la syntaxe des boucles est correctement utilisée.
-  vérifier que les boucles sont bien emboitées les unes dans les autres, qu’il n’y a pas de chevauchement : un tel chevauchement n’est pas repéré par Spip et crée des dysfonctionnements imprévus.

Astuces
-  penser à se servir du “code alternatif”, très utile voire absolument nécessaire dans certains cas : ce code est exécuté si la Boucle en cours ne donne aucune solution. C’est donc utile pour faire la négation d’une condition.
-  de la même manière, le code exécuté Avant la répétition (entre <B_1> et <BOUCLE_1> ) peut être utilisé pour effectuer une autre boucle. Très utile par exemple pour les hiérarchie comme Mots-clés et Groupes de mots clés : la 1ère boucle, sur le mot-clé courant, affiche le titre de ce mot-clé. Et pour afficher le nom du groupe dont ce mot-clé fait partie et avant d’afficher le mot clé et faire d’autres traitements, une autre boucle peut être insérée.

Comme par exemple dans le code ci-dessous (qui affiche Sommaire > Groupe : ... > Mot-Clef : ...) en haut de l’écran :

<B_1>
<a href="#URL_SITE_SPIP">Sommaire </a> 
<BOUCLE_2mot(MOTS) {id_groupe} {par titre} {0,1}>
[&gt; <a href="#URL_MOT">Groupe : #TYPE </a>]
</BOUCLE_2mot>
</B_2mot>

<BOUCLE_1(MOTS){id_mot}>
[ &gt; <a href="#URL_MOT">Mot-Clef : #TITRE </a>]
</BOUCLE_1>
</B_1> 

-  Remarque, très utile quand il est fait un usage intensif des mots clés (et groupes de mots-clés) : ici le groupe, qui n’a pas de #URL_GROUPE (mais ceci peut être contourné en utilisant le lien <a href="groupe_mots.php3?id_groupe=#ID_GROUPE">), est en quelque sorte affiché, grâce au 1er mot clé (par ordre alphabétique : {par titre}) qui fait partie de ce groupe.

-  autre astuce bien utile, illustrée ci-dessus : l’usage de #TYPE (ici pour le groupe dont fait partie le mot courant), quand on ne peut utiliser #TITRE, déjà utilisé (ici pour le mot courant)

Comment déboguer ?
-  Afficher le source (voir plus haut, dans Comment Programmer), permet de suivre le fonctionnement du code, pas à pas.
-  Accéder au fichier CACHE, par votre logiciel FTP : quand il y a message d’erreur, il indique le nom du fichier (et du sous-répertoire de /Cache dans lequel il est) et la ligne où l’erreur se trouve. Cela permet d’identifier plus vite l’erreur.
-  Utiliser des articles de tests, et même un site de tests. Ce qui vous permettra à la fois de tester vos codes (squelettes), mais aussi de vérifier que la version suivante de Spip fonctionne bien comme la précédente. Cela suppose d’avoir une ou plusieurs pages (Wiki ?) sur laquelle vous écrivez le fonctionnement que vous souhaitez obtenir / maintenir.

- Mise à jour :18 November 2007 at 16:10