[PHP] Les règles du "bon" codage ?

Hello^^

Voila j’aimerai avoir vos avis sur comment « bien » coder en PHP… et de manière générale d’ailleurs!

Je suis débutante en PHP, et je dois coder pour mon entreprise :slight_smile: . Comme j’aimerai que mon code soit réutilisable (à prioris par moi-même car personne ne s’y connait), j’aimerai bien votre avis sur une fonction que j’ai faite (et qui marche, c’est pas le problème), à savoir: si vous, programmeurs, pourriez reutiliser ce genre de code. Si ca vous rebuterait pas.

Par exemple:
-Il faut bien espacer les lignes
-il faut mettre beaucoup de commentaires
-il faut ~hum~ tabuler les lignes qui sont dans les mêmes accolades test-boucles
-il faut faire des fichiers différents selon le travail fourni par le code.

Je précise que je suis stagiaire donc je vais retirer aucun bénéfice de ce travail.

Le but de la fonction est de lire des fichiers issus de télérelevé de compteurs, et d’appeller une fonction pour rentrer les données dans une base mysql (si vous avez des conseils pour securiser un base je suis preneuse). Il faut des expressions régulères pour extirper les données.

merci d’avance! nakira

[codebox]

<?php function traiterhisto($fic_name, $numserie) { $handle = fopen("level3/".$fic_name , "r"); //ouvrir le fichier HISTO if ($handle) { while (!feof($handle)) { $buffer = fgets($handle); if(ereg("^FDR[A-Z]{3}",$buffer)) //on lit les lignes et garde celle qui commencent par FDM-NOM DE MOIS- { list($date, $reste)=split(" ", $buffer, 2); //separer la date des données list($champs, $valeur)=split(":", $reste, 2); //separer le nom des champs ***** des valeurs des champs $mois=trim(substr($date, 3,3)); //recuperer mois $annee=trim((substr($date, 6,4))); //recuperer annee $mon_champs=choisirchamp(trim($champs)); //transformer le champs du telérelevé en champs mysql $chiffre=array(); ereg("^([0-9,\. ]+)", trim($valeur), $chiffre); //recuperer la valeur sans l'unité de mesure if(!isset($chiffre[0])) $chiffre[0]='NULL'; inserer($numserie, $mois, $annee, $mon_champs, $chiffre[0]); //lancer les requêtes MYSQL } } fclose($handle); } } ?> [/codebox]

Dans ton exemple, je serais plus du genre a dire “ne PAS sauter plein de ligne”, j’aime pouvoir lire un max de code dans une fenetre, sans avoir a defiler et être gener par plein de “trous”

Sinon … les regles de bon sens.

  • Utiliser des noms de variable qui ont un sens (pas de “if ($Tartiflette == $mouflon) …”)
  • Faire des fonctions/classes/objects
  • Un gros bloc commentaire avant la fonction, qui explique ce qui rentre, comment c’est traité, et ce qui sort
  • Se prendre un système d’indentation, et le garder ! (je suis a la lettre les standards de Drupal (un peu obligé, c’est un peu mon boulot :)), dérivé des standards de PEAR, si tu te faire une idée http://pear.php.net/manual/en/standards.php )

Puis … plein de truc encore, mais il y en a tellement…

Salut,

Je plussois le post d’Hazadess.
Le plus inportant pour moi étant l’indentation et les noms de variables clairs.
Si je peux me permettre, je trouve ton code trop aéré, ça le rend lourdingue à lire.
A titre d’exemple, voiolà comment j’aurai présenté ta fonction :

<?php function traiterhisto($fic_name, $numserie) { //ouvrir le fichier HISTO $handle = fopen("level3/".$fic_name , "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle); //on lit les lignes et garde celle qui commencent par FDM-NOM DE MOIS- if(ereg("^FDR[A-Z]{3}",$buffer)) { //separer la date des données list($date, $reste)=split(" ", $buffer, 2); //separer le nom des champs ***** des valeurs des champs list($champs, $valeur)=split(":", $reste, 2); //recuperer mois $mois=trim(substr($date, 3,3)); //recuperer annee $annee=trim((substr($date, 6,4))); //transformer le champs du telérelevé en champs mysql $mon_champs=choisirchamp(trim($champs)); $chiffre=array(); //recuperer la valeur sans l'unité de mesure ereg("^([0-9,\. ]+)", trim($valeur), $chiffre); if(!isset($chiffre[0])) $chiffre[0]='NULL'; //lancer les requêtes MYSQL inserer($numserie, $mois, $annee, $mon_champs, $chiffre[0]); } } fclose($handle); } } ?>
Ne considère pas ça comme une parole biblique surtout, c’est juste un exemple.
Peut-être un peu trop de commentaires inutiles aussi du genre $mois=trim(substr($date, 3,3));//recuperer mois à mon avis c’est un peu useless mais bon certains diront qu’un code n’est jamais assez commenté.
Voilà, en éspérant t’avoir aidé un peu.

Perso je préfère bien distinguer les commentaires, enfin soit faire des tabulations, soit les mettre à la suite de la ligne de code. Parce que les mettre directement à la ligne sur le même alignement je trouve ça un peu chargé.

merci :slight_smile:

En fait j’ai fais un copié/collé d’un fichier et des lignes se sont rajoutées ^^’’

j’vais essayer de refaire ce fichier avec vos exemples et liens^^