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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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.

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