IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Avis sur la Lisibilité du code


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Par défaut [POO] Avis sur la Lisibilité du code
    Bonjour,

    j'aurais aimé savoir ce que vous pensez du code en terme de lisibité et si vous avez des suggestions a faire pour améliorer le codage.

    Merci

    Déclaration de toutes les champs,tables de la bdd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    class variable {
     
    	//Initialisation des variables
    		var $table;             //$table[]=Nom de la table (index numérique)
    		var $lib_table;         //$lib_table[]=Nom logique de la table (index numérique)
    		var $lib_champs;        //$lib_champs[]=Libellé logique des champs à afficher (ordre modulable) (index enfonction de la table)
    		var $champs;            //$champs[]=Liste des champs dans la base de données (ordre définit dans la bdd correspondance avec les champs à afficher) (index enfonction de la table)
     
    	    var $type_utilisateur;  //Syntaxe -> Identifiant pour les ID auto-Incréments
    	                            //           Clé_ pour les clées étrangères
    	                            //           Cacher_ pour les champs à masquer des affichages
     
    	//Constructeur
    	function variable(){
    		$this->table[1]="Personne";
    		$this->lib_table[1]="Personne";
    		$this->lib_champs["Personne"]=array('Login Utilisateur', 
    							 'Civilité', 
    							 'Nom', 
    							 'Prenom', 
    							 'Téléphone', 
    							 'E-mail', 
    							 'Mot de Passe Utilisateur', 
    							 'Cacher_Type utilisateur',
                                                             'Clé_ville',
                                                             'Clé_Organisme'
    							 );	 
    		$this->champs["Personne"]=array('Login Utilisateur'=>'LOGIN_PERSONNE',
    						 'Civilité'=>'CIVILITE_PERSONNE', 
    						 'Nom'=>'NOM_PERSONNE', 
    						 'Prenom'=>'PRENOM_PERSONNE', 
    						 'Téléphone'=>'TEL_PERSONNE', 
    						 'E-mail'=>'MEL_PERSONNE', 
    						 'Mot de Passe Utilisateur'=>'PASS_PERSONNE', 
    						 'Cacher_Type utilisateur'=>'TYPE_UTILISATEUR'
                                                     'Clé_ville'=>'ID_VILLE',
                                                     'Clé_Organisme'=>'ID_ORGANISME'
    						 );

    Exemple de traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    //Formulaire ajout : Objet connexion base de données, objet déclarartion de variable, id de la table, $type d'utilisateur (facultatif), données de la table
    function Ajout($mysql, $variable, $n, $type='null', $value=''){
    	//Libellé de la table concernée
    	$lib_n=$variable->table[$n];
    	$formulaire="";
    	//Pour chaque champs de la bdd
    	foreach ($variable->lib_champs[$lib_n] as $lib){
    		//Value activée ou désactivée en fonction des paramètres : $value[$variable->champs[nom_table][libellé_champs]]
    		$valeur='';
    		if (isset($value[$variable->champs[$lib_n][$lib]]))
    			$valeur=$value[$variable->champs[$lib_n][$lib]];
     
    		//Afficher en caché le champs de l'identifiant
    		if (ereg("Identifiant", $lib))
    			$formulaire.='<input type="hidden" name="'.$variable->champs[$lib_n][$lib].'" value="'.$valeur.'">';
     
    		//Construire les combos si c'est une clée étrangère
    		elseif (ereg("Clé_", $lib)){
    			$lib_type=$lib;
    			//Supression du paramètre type_
    			if (ereg($type, $lib))
    				$lib_type=ereg_replace($type."_", "", $lib_type); 
    			//Suppression du paramètre clé_
    			$lib_type=ereg_replace("Clé_", "", $lib_type);
    			//Construction de la combo en fonction du résultat
    			if (!ereg('_', $lib_type)){
    				//Construction de la requete combo selon la table personne ou autre
    				if (ereg('Personne', $lib_type))
    					$select=" select ".$variable->champs[$lib_type]['Login Utilisateur'].", ".$variable->champs[$lib_type]['Nom'];
    				else
    					$select=" select ".$variable->champs[$lib_type]['Identifiant'].", ".$variable->champs[$lib_type]['Libellé'];
    				$from= " from ".$lib_type;
    				$formulaire.='<tr><td>'.$lib_type.': </td><td>'.ComboTable($mysql, $variable, $select, $from, $variable->champs[$lib_n][$lib], $valeur).'</td></tr>';
    			}
    		}
     
    		//Afficher en caché le champs ayant pour intituté caché		
    		elseif (ereg("Cacher_Type", $lib) )
    			$formulaire.='<input type="hidden" name="'.$variable->champs[$lib_n][$lib].'" value="'.$type.'">';
    		elseif (ereg("Cacher", $lib) )
    			$formulaire.='<input type="hidden" name="'.$variable->champs[$lib_n][$lib].'" value="'.$valeur.'">';
     
    		//Initialisation basique
    		else
    			$formulaire.='<tr><td>'.$lib.': </td><td><input type="text" name="'.$variable->champs[$lib_n][$lib].'" value="'.$valeur.'"></td></tr>';
    	}
    	$formulaire.='<input type="hidden" name="n" value="'.$n.'">';
    	return($formulaire);
    }

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    question lisibilité c'est bien ! Moi je sauterais une ligne avant chaques commentaire dans la page de traitement !

    Apres ça c est ma façon de faire aussi lol
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    //Initialisation des variables
    var $table; //$table[]=Nom de la table (index numérique)
    var $lib_table; //$lib_table[]=Nom logique de la table (index numérique)
    var $lib_champs; //$lib_champs[]=Libellé logique des champs à afficher (ordre modulable) (index enfonction de la table)
    var $champs; //$champs[]=Liste des champs dans la base de données (ordre définit dans la bdd correspondance avec les champs à afficher) (index enfonction de la table)

    var $type_utilisateur; //Syntaxe -> Identifiant pour les ID auto-Incréments
    // Clé_ pour les clées étrangères
    // Cacher_ pour les champs à masquer des affichages
    Quitte à documenter tes docs utilise un ofrmat standard type doxygen ou phpdoc. Comme sa tu pourra générer une documentation automatiquement.

    bye

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Par défaut
    Merci du tuyau, je ne connaissais pas du tout, j'avais déja remarqué qu'il y avait un certain "formalisme" pour le commentaire de code dans pleins de script mais je ne savais pas que cela pouvait servir à générer des docs à la volée.

    Dans le but d'automatiser le plus possible les traitements, j'ai mis en variable le plus de choses possibles cependant j'ai peur qu'au final ce soit trop fastidieux à lire pour une personne extérieure au projet même en étant bien commenté...

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Pour ma part je rendrais plus lisible les champs des tableaux. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		$this->champs["Personne"]=array('Login Utilisateur'=>'LOGIN_PERSONNE',
    						 'Civilité'=>'CIVILITE_PERSONNE', 
    						 'Nom'=>'NOM_PERSONNE', 
    						 'Prenom'=>'PRENOM_PERSONNE', 
    						 'Téléphone'=>'TEL_PERSONNE', 
    						 'E-mail'=>'MEL_PERSONNE', 
    						 'Mot de Passe Utilisateur'=>'PASS_PERSONNE', 
    						 'Cacher_Type utilisateur'=>'TYPE_UTILISATEUR'
                                                     'Clé_ville'=>'ID_VILLE',
                                                     'Clé_Organisme'=>'ID_ORGANISME'
    						 );
    Que je remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		$this->champs["Personne"]=array(
    		    'Login Utilisateur'        => 'LOGIN_PERSONNE',
    		    'Civilité'                 => 'CIVILITE_PERSONNE', 
    		    'Nom'                      => 'NOM_PERSONNE', 
    		    'Prenom'                   => 'PRENOM_PERSONNE', 
    		    'Téléphone'                => 'TEL_PERSONNE', 
    		    'E-mail'                   => 'MEL_PERSONNE', 
    		    'Mot de Passe Utilisateur' => 'PASS_PERSONNE', 
    		    'Cacher_Type utilisateur'  => 'TYPE_UTILISATEUR'
    		    'Clé_ville'                => 'ID_VILLE',
    		    'Clé_Organisme'            => 'ID_ORGANISME'
    		);
    J'applique aussi l'alignement vertical quand j'ai une série d'affectation. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$lib_n=$variable->table[$n];
    	$formulaire="";
    Que je remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$lib_n      = $variable->table[$n];
    	$formulaire = "";
    Sinon je met toujours un espace autour :
    - des affectations =, .=
    - des concaténations lorsque ce sont des variables : 'chaine'. $variable .'chaine'. $variable

    Et enfin utilisation systématique des accolades, meme pour une instruction.


    Bien entendu ça reste des préférences

  6. #6
    Membre éclairé Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Par défaut
    Pareil pour les init, mais pas d'espace dans le code.

  7. #7
    Membre chevronné Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Par défaut
    Ne pas utiliser à la fois des tabs et des espaces pour l'indentation dans le code. celui que tu as copier/coller est franchement peu lisible à cause du mélange de ces deux caractères: l'indentation est brisée à de maintes reprises. Pour beaucoup de programmeurs, une indentation propre est ce qu'il y a de plus important en terme de lisibilité. C'est la première impression qu'on a quand on survole un code.

  8. #8
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Personnellement j'évite d'indenter les lignes de 8 caractères (taille par défaut des tabulations), mais plutôt de 2 ou 3 caractères.
    Comme ça si j'ai a rajouter de nouvelles lignes de code j'ai moins de risque de sortir de l'écran sur la droite.

    En plus je trouve ça plus lisible, mais c'est une question d'habitude.

    J'essaye aussi d'encadrer certains opérateurs par des espaces, par exemple :
    $this->table[1]="Personne";
    remplacé par :
    $this->table[1] = "Personne";
    De même pour les . + - * /, etc ..., pour les expressions complexes, ça aère mieux le code.

Discussions similaires

  1. Bien coder en C : avis sur bout(s) de code
    Par Merillym dans le forum Débuter
    Réponses: 22
    Dernier message: 16/11/2009, 21h34
  2. Votre avis sur une portion de code
    Par ninikkhuet dans le forum Langage
    Réponses: 7
    Dernier message: 29/10/2009, 13h33
  3. Réponses: 3
    Dernier message: 02/02/2009, 19h13
  4. Réponses: 3
    Dernier message: 01/09/2008, 14h43
  5. [java.lang.class] Votre avis sur une portion de code
    Par be_tnt dans le forum Langage
    Réponses: 3
    Dernier message: 18/10/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo