11-09-2010, 02:49 PM
(Modification du message : 11-09-2010, 03:52 PM par Sephi-Chan.)
Il n'y a pas de Y dans mon pseudo.
Par contre, j'en profite pour te donner quelques conseils pour améliorer la qualité de ton code.
Par ailleurs, je te conseille de développer en anglais uniquement (le mélange des langues au sein du code source est une mauvaise chose pour la lisibilité). De plus, reformuler dans une autre langue est souvent un bon moyen de cerner si le nom d'une variable est bonne.
Prenons ta fonction ligne, par exemple (simplement réindenté) :
Déjà, la fonction est mal nommée puisqu'en français. De plus, on ne distingue pas les mots. Tu peux utiliser la notation camelCase ou underscore, qui donnent repséctivement testVulgaire et test_vulgaire. Un bon nom serait isVulgar ou is_vulgar.
Ta variable $result est mal nommé, déjà elle est en anglais alors que le reste de ton code est en français (tout devrait être en anglais), ensuite, elle n'indique pas du tout ce qu'elle contient. Ensuite, le fichier est mal nommé, salmots ne veut rien dire. Enfin, le commentaire est inutile : bien sûr qu'on sait ce que va contenir le fichier.
Ensuite, les lignes suivantes sont trop commentées : tout le monde sait ce que fait in_array et sait lire un if : tu réduis la lisibilité de ton code.
Enfin, in_array renvoie déjà un booléen, donc tu peux l'utiliser directement comme ta valeur de retour.
Voici un bon refactoring de ta fonction :
C'est beaucoup plus concis et lisible que tout le baratin qu'il y avait avant : le code est de meilleur qualité.
Ce serait bien que tu fasses la même chose avec ton autre fonction, qui n'est pas bonne pour toutes les raisons expliquées plus haut, mais également parce qu'elle a plusieurs rôles : mieux vaut la découper en plusieurs fonctions plus petites.
La fonction pour déterminer si le mot est plus court qu'une longueur donnée :
Sephi-Chan
Par contre, j'en profite pour te donner quelques conseils pour améliorer la qualité de ton code.
- Le code est très mal formatté. C'est capital de bien présenter ton code pour le relire facilement ;
- Déjà, il y a beaucoup trop de commentaires inutiles. Plus tu as de commentaires, moins ils sont importants (car noyés dans la masse) ;
- Le nommage de tes variables n'est pas pertinent : tu ne devrais pas utiliser d'abréviations car elles nuisent à la lisibilité ;
- Les fonctions métier ne doivent jamais rien afficher (sauf à des fins de debug, éventuellement) ;
Par ailleurs, je te conseille de développer en anglais uniquement (le mélange des langues au sein du code source est une mauvaise chose pour la lisibilité). De plus, reformuler dans une autre langue est souvent un bon moyen de cerner si le nom d'une variable est bonne.
Prenons ta fonction ligne, par exemple (simplement réindenté) :
function testvulgaire($mot){
$result = file("salmots"); /* le fichier texte salmots contient une liste de mots vulgaires.*/
if(in_array($mot,$result)) /* Teste si le mot existe dans les mots vulgaires.*/
{/* le mot fait partie des mots vulgaires.*/
return true;
}
else
{/* le mot est absent des mots vulgaires.*/
return false;
}
}
Déjà, la fonction est mal nommée puisqu'en français. De plus, on ne distingue pas les mots. Tu peux utiliser la notation camelCase ou underscore, qui donnent repséctivement testVulgaire et test_vulgaire. Un bon nom serait isVulgar ou is_vulgar.
Ta variable $result est mal nommé, déjà elle est en anglais alors que le reste de ton code est en français (tout devrait être en anglais), ensuite, elle n'indique pas du tout ce qu'elle contient. Ensuite, le fichier est mal nommé, salmots ne veut rien dire. Enfin, le commentaire est inutile : bien sûr qu'on sait ce que va contenir le fichier.
Ensuite, les lignes suivantes sont trop commentées : tout le monde sait ce que fait in_array et sait lire un if : tu réduis la lisibilité de ton code.
Enfin, in_array renvoie déjà un booléen, donc tu peux l'utiliser directement comme ta valeur de retour.
Voici un bon refactoring de ta fonction :
function is_vulgar($word){
$vulgar_words = file('vulgar_words');
return in_array($word, $vulgar_words);
}
C'est beaucoup plus concis et lisible que tout le baratin qu'il y avait avant : le code est de meilleur qualité.
Ce serait bien que tu fasses la même chose avec ton autre fonction, qui n'est pas bonne pour toutes les raisons expliquées plus haut, mais également parce qu'elle a plusieurs rôles : mieux vaut la découper en plusieurs fonctions plus petites.
La fonction pour déterminer si le mot est plus court qu'une longueur donnée :
function is_shorter_than($word, $length){
return strlen($word) < $length;
}
Sephi-Chan