qualité du code

Eléphant du PHP | 74 Messages

02 mars 2009, 21:46

Bonjour,

Je travail actuellement pour une société pour qui je dois valider / vérifier / proposer des choix technique autour de développement web. Cela à commencer par définir des règles de développement afin de rendre le code plus homogène et pérenne sur les différents projets.

Et pour un développeur je tombe sur ce code là et je voudrais le convaincre par une bonne argumentation que ce n'est pas bien, mais les mots me manque et j'ai besoin de votre aide. (sachant que dans quelque jours je ferais, je pense, lire ce post au développeur en question) :

Voici le code : un seul echo et c'est bien cela qui me gène :
        echo "<center><form action=\"scripts/gestion_comptes.php\" id=\"form_modif_compt\" method=\"post\"><table id=\"tab_general\"><caption align=\"bottom\"><br /><br /></caption>"
                ."<tr><td  id=\"td_general_entete\">Identifiants</td><td  id=\"td_general_entete\">Niveau de droit</td><td  id=\"td_general_entete\">Fin de validité du compte</td></tr>"
                ."<tr><td id=\"td_creat_compt1\">"
                ."Modifier les noms et prénom<br /><input class=\"inp_creat_compt\" type=\"text\" id=\"nom_pren\" name=\"nom\" value=\"$compte_util->nom\" /><br /><br />"
                ."Nouveau mot de passe<br /><input class=\"inp_creat_compt\" type=\"text\" id=\"pass\" name=\"passwd\" /><br />Si le mot de passe ne change pas <br /> merci de laisser ce champs vide"
                ."</td><td id=\"td_creat_compt2\">"
 
                .'<script type="text/javascript">'
                        //.'alert(\'coucou\');'
                        .'$(document).ready(function(){'
                        .'$("input[@name=\'droit\']:nth('.$radio_checked.')" ).attr("checked","checked" );'
                        .'})'
                .'</script>'
 
                ."<input name=\"login\" type=\"hidden\" value=\"hidden\" />"
                ."<input name=\"date_valid\" type=\"hidden\" id=\"recap_date\" value=\"$compte_util->date_valid\" />"
                ."<input name=\"modif_util\" type=\"hidden\" />"
 
 
                ."<input type=\"radio\" name=\"droit\" value=\"1\" class=\"rad_creat_compt\" id=\"droit_1\" /> <a class=\"a_niv_droit\">Opérateur</a> <br />"
                ."<input type=\"radio\" name=\"droit\" value=\"2\" class=\"rad_creat_compt\" id=\"droit_2\" /> <a class=\"a_niv_droit\">Responsable commercial</a> <br />"
                ."<input type=\"radio\" name=\"droit\" value=\"3\" class=\"rad_creat_compt\" id=\"droit_3\" /> <a class=\"a_niv_droit\">Responsable marketing</a> <br />"
                ."<input type=\"radio\" name=\"droit\" value=\"4\" class=\"rad_creat_compt\" id=\"droit_4\" /> <a class=\"a_niv_droit\">Administrateur</a> "
                ."</td><td id=\"td_creat_compt1\">Date de fin de validité <br /><br />";
Merci
Mon projet opensource de gestion de Devis, Commandes, Factures, pour TPE : OpenDCF : http://opendcf.1g6.biz

Mammouth du PHP | 2937 Messages

02 mars 2009, 22:44

Déjà, tu peux lui dire qu'un tel code rend la maintenance du code HTML difficile, surtout s'il doit être maintenu par un intégrateur qui ne maîtrise pas PHP.

Ensuite, le fait d'insérer une chaîne de caractères entre guillemets doubles ralentit le temps d'exécution du script et diminue les performances par rapport à l'usage de guillemets simples et de concaténations (si la différence est à peine perceptible pour un tout petit script, elle peut ne pas être négligeable quand une grosse application entière est en jeu) : en effet, avec les guillemets doubles, PHP s'attend à des variables insérées qui doivent être interprétées, ce qui n'est pas le cas avec les guillemets simples. Autrement dit, il est plus avantageux d'écrire
echo 'Ceci est une chaîne comportant une variable interprétée '.$lavariable;
que
echo "Ceci est une chaîne comportant une variable interprétée $lavariable";
Avantage qui se manifeste aussi quand on doit y insérer des bouts de codes HTML, comme les attributs, qui apparaissent ou non selon le contexte :
<input type="checkbox"<?php echo ($case_cochee === true)? ' checked="checked"': '' ?> />
des échappements en moins pour la valeur de l'attribut.

Il existe également un compromis, qui consiste à utiliser la syntaxe Heredoc. Elle a l'avantage de faciliter la maintenance du code HTML (pas d'échappements) ; mais, à l'instar des chaînes encadrées par des guillemets doubles, le temps d'exécution risque d'en pâtir, les variables insérées étant interprétées. Heureusement, PHP 5.3 apportera un autre compromis, alliant facilité de maintenance et rapidité d'exécution : la syntaxe Nowdoc.

Eléphant du PHP | 353 Messages

02 mars 2009, 22:45

Il est développeur professionnel ou bien stagiaire?
Non parce que vu le code..

Déjà... ce code nécessite une chose importante : une séparation du php, du html et si possible du javascript.
Pourquoi? parce que sur une simple page cela peut passer, mais sur une site complet et fourni, une séparation du code est absolument nécessaire pour mieux ordonner le code, mieux le maintenir.

Ensuite...
Pourquoi ne pas utiliser de système de template?
Là encore pour une page unique ce n'est pas vitale, mais pour un site complet et complexe, un système de template permettra une économie de code html et un sérieux bien pratique.

Quand au code html.
La balise <center> est a banir et n'est plus valide, tant qu'a faire comme il fait... autant mettre de simple quote " ' " pour ne pas avoir à protéger chaque double quote dans son code.

voila quelques petites réflexion rapidement.

ViPHP
ViPHP | 4039 Messages

02 mars 2009, 23:39

Déjà, rien que le fait que cette façon de faire empêche la coloration syntaxique du html (donc bonjour pour chercher en vitesse le guillemet qui manque), est pour moi déjà un no-brainer.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.