Coder proprement [Résolu]

Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
17 novembre 2008
- - Dernière réponse : forresst
Messages postés
1
Date d'inscription
mardi 7 août 2001
Dernière intervention
26 mars 2006
- 26 mars 2006 à 10:39
Bonjour,

Cela fais quelques temps que je développe et désireux d'améliorer mon entropie, je souhaiterais savoir s'il existe des normes pour coder proprement.
En effet, je n'ai pas trouvé de topic pertinent, même sur le net en général.
Je sais qu'il existe de très bon développeurs ici. Pouvez-vous me transmettre vos normes, conventions s'il vous plaît.
Cette question me tarrode car je trouve que mon code fait toujours un peu désordre. Je souhaite éviter la redondance, travailler avec des fichiers inclus plutôt que faire des copier-coller et modifier mes variables.

Je vous remercie par avance.

Cdt.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
3
Merci
Hello,

tu sais, ça reste assez subjectif ce genre de trucs, et personne ne sera exhaustif sur le sujet. Et puis ça dépend des projets, aussi...
Bref, je vais te donner un url, déjà, puis essayer de faire le tour de ce que j'en pense moi.
L'url :
http://www.phpcs.com/codes/REGLES-BONNE-PROGRAMMATION-PHP_24870.aspx

Ensuite, sans être exhaustif probablement, donc :
- respecter une norme de programmation : à savoir, nom des fonctions, nom des variables, etc... Pourt ma part, en ce moment, mes fonctions (ou méthodes) sont de cette forme :
function setMyFile ()
Mes variables sont comme ceci :
$iCompteur (indique que c'est un compteur, et que c'est un entier - integer)
$sString : chaîne générique, de type chaîne, donc...(string)
$sQuery : chaîne de requête sql
$rRequete (par exemple hein) : un type ressource, provenan' d'un query ()
$aNomVilles : tableau de noms de villes (type array).
etc...
Mes classes sont généralement comme ceci :
class oMaClasse
et les instances :
$oMaClasse.

- Essayer de commenter, avec des commentaires aux normes. Exemple :
/**
* méthode privée getReturns
* sert à récupérer le code pour la/les valeur/s de retour de la méthode, si elle est documentée
* @Param string comments : contient une chaîne avec les commentaires de la méthode
* @Return array aTmp : contient un tableau avec les retours possibles
*/
public function getReturns (...) {
...
}

- indenter le code, tjrs de la même manière.

- tâcher de séparer le plus possible le code php du code html.

Côté programmation maintenant, réellement :
- perndre l'habitude de coder avec une bonne configuration php, et qui respecte les suggestions de php.net. Entre autres :
register_globals à Off
short_open_tag à Off (évite les embrouilles avec le xml et le xhtml)
register_long_array à Off
error_reporting à E_ALL

- toujours vérifier qu'une variable existe, et qu'elle est du type attendu le cas échéant (notamment pour des entrées utilisateurs, ou si un autre codeur va appeler ce code). Limiter au minimum les écarts possible entre ce qu'on attend et ce qu'on reçoit : donc, user et abuser des isset () empty () is_int () is_numeric () is_object () etc...
Et faire très attention aux types évidemment, en abusant de l'opérateur de comparaison typé : === ou !==
Quand une fonction peut renvoyer false, ou 0, et que ces résultats sont différents (strpos par exemple), ne jamais tester comme ça : if (strpos (...))...parce que forcépment, il y aura un jour un problèùe! Donc :
if (false !== strpos (...))
Pareil pour la lecture de répertoires classique, par exemple :
while (false !== readdir ())

- PHP est un langage TRES fourni en fonctions diverses et variées : il faut TOUJOURS préférer les fonctions natives de php, à un algo maison. Donc, quand on veut faire quelquechosen, on regarde d'abord si PHP ne possède pas une fonction qui le fait! Un exemple con : sur codyx.org (http://www.codyx.org/), le nouveau site de snippets de CS, on a un snippet pour inverser les caractères dans une chaîne. La plupart des langages parcourent la chaîne, chaque caractère, et les place dans une autre chaîne, en partant de la fin...PHP fait ceci : $sString = strrev ($sString);
C'est pas beau la vie ?
Pourquoi utiliser en priorité ces fonctions ? Parce qu'elle ssont natives, écrites en C, elles seront TJRS plus rapides qu'un algo maison écrit en php.

- saisies utilisateur : toujours les échapper!! TOUJOURS! Et toujours les vérifier, TOUJOURS! Ne jamais faire confiance à des données extérieures.

- echo est plus rapide avec des apostrophes. Après, virgule ou point, c'est au choix. Un intérêt des apostrophes autre :
echo ''; on peut garder les guillemets pour les attributs html.
Heredoc peut aussi parfois être utile, et plus clair surtout (mais attention à l'indentation du code html généré):
echo <<<HTML

HTML;

- les basiques, valables dans la plupart des langages :
éviter de doubler inutilement les variables
une boucle for évalue l'expression qu'elle contient à chaque itération, donc , on ne fait pas :
for ($i = 0; $i < count ($aTab); $i ++)
mais :
$iCpt = count ($aTab);
for ($i = 0; $i < $cpt; $i ++)
A moins que ce soit voulu parce que la taille du tableau est modifié dans la boucle, par exemple.
On n'utilise pas de variables non déclarées (de toutes façons, c'est impossible en error_reporting à E_ALL)
On crée des fonctions autant que possible, afin d'éviter les traitements redondants (ou on code en POO, au choix...)
On ne crée PAS de fonctions qui va simplement lancer 1 fonction interne php (c'est souvent tentant en POO justement), c'est inutile, c'est redondant, et c'est plus lent, forcément.
On fait bien attention aux possibilités des fonctions internes : un exemple trop fréquent:
$sString = str_replace ('.', ';', $sString);
$sString = str_replace (':', '!', $sString);
etc... alors que str_replace accepte des tableaux en paramètres! Bref, une ligne suffit, et on en voit souvent des 10aines à la suite...

Bon, la suite plus tard si je trouve d'autres trucs.

Merci malalam 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de malalam
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
17 novembre 2008
0
Merci
Malalam, merci beaucoup !
Tes conseils sont précieux et pertinents.

Bien que je n'utilise pas encore tout ce dont tu as parlé, je suis content d'en savoir davantages, notamment en ce qui concerne la rapidité d'exécution du code.

Je pense que ce topic peut être très intéressant et j'espère que chacun viendra l'agrémenter pour nous faire part de ses conseils en termes de rapidité et de simplicité.
Pourquoi pas insérer sur le site une sorte de fiche pratique pour coder proprement et optimiser son travail ?

Que pensez-vous des 'include'/'require' pour éviter de se retrouver avec des pages à rallonge ?

P.S. : Il ne faut pas voir derrière cela une volonté d'uniformiser, voire même d'imposer un règlement.
Commenter la réponse de nougitch
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
0
Merci
Préférer : require_once '';
Mais oui, évidemment, tu mets tes fonctions dans un fichier requis, par exemple.
Quand on code POO, on fait pareil, on met ses classes dans des fichiers à part.
Commenter la réponse de malalam
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
17 novembre 2008
0
Merci
Très bien, merci.
J'attends la suite avec impatience.
Commenter la réponse de nougitch
Messages postés
1
Date d'inscription
mardi 7 août 2001
Dernière intervention
26 mars 2006
0
Merci
Merci malalam !

Toutes ces infos sont très interressantes pour un débutant comme moi.

"Pourquoi pas insérer sur le site une sorte de fiche pratique pour coder proprement et optimiser son travail ?" dixit nougitch.
L'idée me parait très interressantes, elle permettrait une entraide pratique et de débuter avec de bonnes bases. Pour ma part je suis souvent craintif dans mes developpements : est ce que mon code est rapide, est que mon code est assez sécurisé, etc ...

Voila, c'est mon soutien personnel pour votre site et l'idée de nougitch.

En attendant aussi la suite ....
Commenter la réponse de forresst

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.