Tiens, ça faisait longtemps que je n’avais pas participé à une chaine de blog. Suite à l’invitation de Darklg à livrer les conventions que j’utilise en programmation, voici mes secrets avec un exemple PHP et CSS à la clé. Voici une des rares fonction PHP que j’ai eu l’occasion de « développer » ; elle rassemble peu ou prou ce qui se fait presque partout ailleurs :
<?php function currentPage($strPage) { if (strstr($_SERVER['PHP_SELF'], $strPage)) { echo 'class="current_' . $strPage. '" '; } else { echo ''; } } ?>
<?php
car<?
tout seul, saymal 😉- Fonctions en lowerCamelCase. Avant, j’avais tendance à utiliser le même format que les fonctions native du langage (nom_fonction) en séparant les mots avec un underscore,
- Accolade ouvrante sur la même ligne que l’intitulé de la fonction,
- Variables préfixées avec 3 caractères (ici
str
pour string -> chaine de caractère) afin de savoir ce que l’on fait, même si sur 3 lignes les risques de se tromper sont peu nombreux ^_^v (les conventions sont faites pour être appliquées par tous les temps !). - Indentation avec des tabulations d’une longueur de 4 espaces ou simplement 4 espaces, mais je trouve l’utilisation de la touche
tab
plus rapide 😉 - Dans cet exemple, je n’ai pas mis d’espace entre les parenthèses et les variables ou les opérateurs, mais il m’arrive souvent d’en mettre pour clarifier le code.
En CSS, je n’utilise qu’un seule convention de manière systématique : l’accolade ouvrante sur la même ligne que le sélecteur et la fermante sur sa propre ligne :
.classecomportantunseulmot { float: left; margin-left: 1.5em; padding: 1em; font: 1em/1.5 'andale mono', 'lucida console', monospace; color: #333; background: #eee url(pix/puce.png) no-repeat 0 5px; }
.classecomportant-deuxmots { color: #333; }
Pour le reste, j’essaie de respecter l’ordre des propriétés suivant :
- Structure (flottement, positionnement, marges internes et externes, etc.),
- Apparence (typographie, interlignage, couleur, background, etc.). J’essaie de suivre ce principe au niveau même de la feuille de style dans sa globalité.
Par ailleurs, lorsque la classe est composée de plusieurs termes, j’utilise le tiret et je m’arrange pour limiter le nom des sélecteurs à trois mots.
Enfin, si je garde l’accolade fermante sur sa propre ligne même quand il n’y a qu’une seule ligne de propriétés CSS pour garder la lisibilité de l’ensemble, je ne m’amuse pas à remettre de l’ordre dans la mise en page des frameworks CSS comme Blueprint qui laissent les accolades ouvrantes et fermantes sur la même ligne lorsqu’il n’y a qu’une propriété dans la déclaration CSS !
Voilà, c’est fini ! Je passe le relai à tous les lecteurs-développeurs qui lisent ce blog 🙂
Préfixer ses variable avec son type c’est la notation hongroise si je ne m’abuse ? o_O
@sylvain > yep, effectivement, j’utilise donc une notation lowerCamelCaseHongroise 😉
Merci d’avoir répondu à la chaine 🙂
Elle est très instructive, en plus ^^
Bjr,
J’ai passé l’accolade ouvrante à la ligne depuis qques temps et à l’usage me semble + lisible.
function process()
{
}
J’suis pareil pour la plupart des choses, mais pour la fonction, je préfère un return à un echo 🙂
« Avant, j’avais tendance à utiliser le même format que les fonctions native du langage (nom_fonction) en séparant les mots avec un underscore, »
En fait, le langage PHP est assez ignoble sur ce point, certaines fonctions sont séparées par un _, d’autres sont en camelcase, d’autres tout en minuscule…
@Darklg > de rien, ça me donne l’occasion de mettre « PHP » dans le title ^_^v
@depassage > C’est peut-être plus lisible, je ne sais pas… J’essaie toujours de trouver le bon compromis entre la lisibilité,le nombre de ligne et la facilité de la maintenance. Ce qui fait que même pour les CSS, je commence à changer mes habitudes en utilisant peu à peu .maclass { propriété: valeur; }
@Palleas > je ne suis pas vraiment développeur et je ne connais pas la subtilité entre l’echo et le return…
@Gameplayer > c’est clair, je me dit que les developpeurs du langage PHP devraient s’atteler à harmoniser le nom des fonctions dans une prochaine version. Quoique, ça doit demander pas mal de ressources pour garder la compatibilité avec les anciennes versions du langage !
@br1o : pour compléter ce que dit Palléas, echo affiche directement la valeur, alors que return ne fait que la retourner. Avec return, tu peux par exemple enregistrer le résultat de la fonction dans une variable $classname = maFonctionDeRetour(); et utiliser cette chaîne $classname dans un autre contexte, par exemple pour effectuer des retraitements ou des concaténations.
Avec ton exemple, c’est pas forcément évident puisque ta fonction currentPage() a pour but quasi-exclusif d’envoyer des données en sortie HTML. Ce type de fonction a son utilité, mais ton intitulé de fonction ne dit ni :
– sa nature (elle fait un print/echo au lieu de return)
– l’exacte donnée concernée (un attribut de classe css)
Si tu bossais avec des développeurs, ils te feraient les gros yeux avec des noms de fonctions pareils ! Bien sûr, si tu es tout seul tu t’y retrouves plus facilement mais essaie de te relire dans trois ans…
Perso j’aurais appelé cette fonction affiche_classe_page_courante(), en français. Mais on pourrait aussi écrire echoCurrentPageClass() si tu es anglophile.
Mais ce n’est que mon avis…