Bonnes pratiques PHP
Vite fait, un petit jeu pour vous, amis PHPiens.
Dans le snippet de code qui suit se cachent 6 bonnes pratiques (7 selon le degré de subjectivité que l'on inclue dans une bonne pratique), saurez vous les retrouver ?
<?php
$code_is_ugly = true;
if (9069 === $code_author) {
$code_is_ugly = false;
}
?>
Comments
utilisation du tag <?php au lieu du short_tag
Déclaration/initialisation de variable avant de l'utiliser ($code_is_ugly)
test de l'opérande avant la variable (9069 avant $code_author)
vérification des types (===)
J'en vois pas plus :/ (à supposer que j'ai relevé de bonne choses déjà)
1. Déclarer ses variables (sauf que là $code_author n'a pas été déclaré ^^)
2. Tester le typage
3. Utiliser des noms de variables parlants
4. Utiliser des noms de variables anglophones
5. Pas de shorts tags
6. Indenter son code (perso je suis pas fan des tabulations)
7. Respecter un standard de codage (genre Pear)
NiKo à tout dit.
Je n'avais pas pensé au 4. de NiKo, mais effectivement, on peut considérer ça comme une bonne pratique :p
Par contre très perspicace remarque de Hades (mais mal formulée): le test de la constante 9069 en la plaçant a gauche de l'équation permet d'éviter les prises de têtes sur un truc genre:
if ($code_author = 9069) {qui renvoient systématiquement true et qui peuvent prendre des heures à débuguer (nottament quand c'est la première fois qu'on tombe dessus).
Pour le $code_author, on assume qu'il a été déclaré plus haut :-)
Sinon, je suis curieux de savoir ce pourquoi tu n'es pas fan des tabs NiKo :o (loin de moi l'idée de lancer un troll espaces vs tabs, tout le monde sait que tabs > * hem)
Pour les tabulations, c'est un peu les goûts et les couleurs, mais princiapelement parce que la taille d'une tab par défaut varie d'un soft à l'autre : j'en utilise pas mal de différents (eclipse, notepad++, vim, etc.), et pas toujours chez moi (donc je peux pas toujours toucher à la conf.)
Les espaces me garantissent un affichage conforme partout. Rien de plus énervant d'ouvrir du code qui a été indenté sous tel soft et qui rend différemment sur celui que tu utilises :|
bon ben c'est pas encore aujourd'hui qu'on me convertira aux espaces :p
Pas mal ce petit exercice.
Je vous conseille à ce propos l'excellent livre "PHP5 Best practices" (dispo en français).
Cet exercice peut-être pas mal pour un petit test lors d'un entretien d'embauche.
J'aime assez rajouter au niveau des noms de mes variables une information sur le type :
$strVariableName ==> chaîne
$booVariableName ==> booléen
Après ca peu parfois surcharger les noms quand on commence a utiliser des objets (préfix "obj" ? préfixe dépendant de l'objet ?)
Vous en pensez quoi ?
Les variables étant faiblement typées en PHP, ajouter un préfixe de type peut induire un développeur en erreur, en lui laissant croire que $booVariableName est forcément un booléen.
D'autant plus que certaines fonctions de PHP renvoient un tableau si ok et false si pas ok : comment nommer la variable ? $arrOrbooResult ?
$mixedResult ? Pouah ! Au pire *pour la lisibilité* tu peux retyper la variable :
echo (string) $result;
Mais on atteint un peu les limites de PHP qui n'est pas typé fondamentalement.
Une remarque, quand je lis le code j'me pose la question, d'où vient le 9069.
C'est sûr que là c'est qu'un exemple, mais c'est une bonne pratique aussi de ne pas utiliser de valeurs obscures dans son code :)
9069, c'est mon id sur http://www.parano.be/ (sur lequel j'ai publié ce petit "exercice" avant de le publier ici).
Sinon pour la notation "hongroise" (j'ai cru lire quelque part il y a quelques temps que ce n'est pas vraiment ça la notation hongroise), je ne suis pas fan non plus: je pense qu'un code bien pensé n'a pas besoin de ce genre d'artifice pour être compréhensible :-)
Mettre l'opérande après la variable à tester me choque toujours. Enfin côté lisibilité c'est un peu surprenant non ?
C'est une habitude à prendre on va dire, c'est vrai que d'un point de vue lecture, il semble plus logique de placer la variable à gauche de l'équation, et j'avoue que moi même je ne le fais pas systématiquement, mais ça peut être une source de gain de temps considérable quand on oublie malencontreusement un ou deux signes égal puisqu'assigner une variable à une constante provoque une erreur fatale :-)
You could simplify :
$code_is_ugly = (9069 !== $code_author);