1. #1
    Membre habitué Avatar de kagura
    Inscrit en
    avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 360
    Points : 130
    Points
    130

    Par défaut Qu'est ce que cela veux dire un "code propre" selon-vous ?

    Bonjour,

    Qu'est ce que cela veux dire un "code propre "selon-vous ?

    « Seuls vos vrais amis savent où vous frappez pour que ça fasse mal. » - Bernard Werber

  2. #2
    Expert éminent
    Avatar de Swoög
    Inscrit en
    janvier 2003
    Messages
    6 046
    Détails du profil
    Informations personnelles :
    Âge : 29

    Informations forums :
    Inscription : janvier 2003
    Messages : 6 046
    Points : 8 780
    Points
    8 780

    Par défaut

    Un code propre, ça veut dire deux choses :
    1°) un code propre à voir, c'est vrai, bien indenté, avec une cohérence dans les noms de variables et de fonctions, etc...

    2°) mais ça veut aussi un dire un code sans erreurs conceptuelles, sans erreurs grossières, sans désoptimisations (exemple : "$mavar"), sans lourdeurs... etc... en bref, un code dont la sémantique est cohérente... si on utilise des guillemets simples et la concaténation pour les variables, le faire tout le temps, et n'utiliser les guillemets double que quand c'est nécessaire ("\r\n" par exemple)

    si on utilise sprintf, l'utiliser tout temps...

    etc...
    Rédacteur "éclectique" (XML, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [code] (bouton #) et au tag (en bas)

  3. #3
    Membre émérite
    Avatar de Maxoo
    Profil pro
    Expert PHP
    Inscrit en
    novembre 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2004
    Messages : 2 123
    Points : 2 607
    Points
    2 607

    Par défaut

    ca dépend, si c'est de l'HTML ca peut dire valide W3C.

    si c'est du PHP, voir le post de Swoög, auquel j'ajoute :
    ca peut aussi dire utiliser les balise code ou bbcode pour que les membres du forum se casse pas les yeux dessus, et pas forcement poster tout le code, mais les parties judicieuses pour analyser le probleme rapidement (avec les numéro de lignes si possible etc.)

    le plus souvent moi je dis : balise code et code pas valide ...
    Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
    Mon espace Développez : mes Créations.


    Rencontre & Carte des Membres de Developpez.com, version 3.0

  4. #4
    Expert confirmé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    février 2005
    Messages
    3 379
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : février 2005
    Messages : 3 379
    Points : 5 423
    Points
    5 423

    Par défaut

    Je vais rejoindre les dires de Swoög concernant la cohérence et être fidèle à ça manière de codé du début à la fin.
    Quand on prend un projet entier d'une autre personne il y a la phase ou il faut comprendre ça manière de voir les choses. Si au bout 1/2 heure nous nous aperçevont qu'il a son propre protocole d'écriture de code ça devient plus facile pour la suite même si ce qu'il a fait n'est pas forcément bien ficelé mais dans l'essentiel c'est d'arriver à comprendre vite. Pour mon projet perso j'ai établie un protocole unique sur le nommage de mes variable. Ex
    $arrObjUtilisateur; => Tableau d'Objet Utilisateur
    $objUTilisateur; Obj Utilisateur
    $arrXxxx; => Tableau de ....
    $i , $j, $k, $l , ... Variable d'incrémentation ou décrémentation.
    ...
    Dans mon projet c'est ainsi tous le temps. Apres ça reste discutable sur les nom ou la maniere mais tant que je reste fidèle. Le but est de rester compréhensible et se dire tous le temps: "Et si autre dev voit mon code est-ce qu'il va comprendre? et si je reviens 6 mois plus tard est-ce que je vais comprendre".

    Code propre c'est aussi un code organisé, structuré. Pas des même requêtes qui se trouve dans différent fichiers ou il faut courir après parce que la structure de la base de données a changé. Certe c'est pas tous le jours qu'ont change la structure d'une table mais quand ça arrive t'es degue.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  5. #5
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : novembre 2005
    Messages : 977
    Points : 959
    Points
    959

    Par défaut

    Je permet d'ajouter èa ce post très bien quelque petit détails qui peuvent etre bien, les commentaires (on en mets pas suffisament ou encore pas aux bons endroits)

    Je crois qu'un entete dans chaque page sur l'utilité et la finalité du script est intéressant a avoir, comme ca dans la réutilisation de code on peut savoir rapidement de quoi il en est

    La description des fonction que l'on créé ainsi que la description des paramètres se vaut un outils important dans la structure et la propreté

    Et finalement si une journée on programme et sommes très "dans notre bulle" on peut créere des algorithme qui peuvent etre difficile a comprendre plutard s'il comporte beaucoup de ligne de code...un petit commentaire sur les parties moins évidante est grandement apprécié

    Pour ma part, je me garde un fichier de variable session pour identifié à quelle page on les initialisent, les détruient, leur attribuent de nouvelle valeur...C'est plus facile de les retrouver dans une application comportant plusieurs plusieurs page

    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  6. #6
    Membre émérite
    Avatar de Maxoo
    Profil pro
    Expert PHP
    Inscrit en
    novembre 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2004
    Messages : 2 123
    Points : 2 607
    Points
    2 607

    Par défaut

    genre ca : http://www.developpez.net/forums/sho...28#post1112428
    ca donne pas envie de le lire, apres tu notera qu'il y a quand meme de l'indentation etc.
    Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
    Mon espace Développez : mes Créations.


    Rencontre & Carte des Membres de Developpez.com, version 3.0

  7. #7
    Membre éprouvé Avatar de julien.63
    Profil pro
    Inscrit en
    décembre 2005
    Messages
    1 337
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2005
    Messages : 1 337
    Points : 1 135
    Points
    1 135

    Par défaut

    en tant que non gourou de php, j'aurai envie de rajouter qu'un code propre c'est aussi un code suffisamment clair et commenté pour qu'une autre personne puisse plonger dans le code sans se noyer.

  8. #8
    Invité
    Invité(e)

    Par défaut

    Citation Envoyé par Maxoo
    ca dépend, si c'est de l'HTML ca peut dire valide W3C.
    Je pense qu'il ne faut surtout pas confondre du code propre et de la validation W3C !

    Si l'on parle de (X)HTML (par exemple) et W3C; on fait plutôt référence à de la sémantique web (rigueur dans la structuration grammaticale des pages, séparations du contenu et du contenant)...

    ...Et si on parle du W3C en général, il s'agit plutôt de normes (recommandations ou standards) de conceptions uniformisées.

    A mon avis, même si on peut jouer sur les mots, je pense que ce n'est pas une bonne idée d'assimiler W3C et le fait de "coder proprement".

    Ce que j'appelerais du code propre (et je suis assez stricte avec moi-même dans le domaine ) :

    • Une convention permanante pour tous les noms de classes, attributs, méthodes, fonctions, variables ou constantes...
    • Tous ces noms dans une seule langue (pas de pseudo-langage français<->anglais)
    • Eviter au maximum les abréviations.
    • Commentaires "PHPdoc" aux endroits opportuns.
    • Indentation contrôlée...
    • Initialisation de toutes les variables
    • Pas de code grossièrement superflux (typiquement un bloc "else" juste après un bloc "if" contenant un "return" explicite ! )
    • En orienté objet, essayer de respecter les principes de conception objet.
    • En procédural, répartir le code en fonctions (bonne chose de faite !)
    • Toujours généraliser (factoriser) son code source lorsque c'est possible ! (Sans que ça tourne à l'obsession ).
    • Et dans les programmes en général, définir dès le départ une arborescence logique pour placer ses scripts, fonctions, classes, etc.


    Evidemment, il est difficile de respecter toutes ces directives, et pour ainsi dire, j'ai rarement vu des scripts ou applications PHP respectant parfaitement ces (mes) conventions, mais enfin, les perfectionnistes comprendront .
    Dernière modification par Invité ; 28/06/2006 à 22h17.

  9. #9
    Expert confirmé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    février 2005
    Messages
    3 379
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : février 2005
    Messages : 3 379
    Points : 5 423
    Points
    5 423

    Par défaut

    Autre chose. Si vous connaissez un peut l'objet et que vous travaillez en équipe ne faite pas d'objet parce qu'il y a pas pire qu'une personne qui utilise l'objet sans aucune logique c'est pire que tous.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  10. #10
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    avril 2005
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2005
    Messages : 271
    Points : 151
    Points
    151

    Par défaut

    Un code propre c'est :

    1) un code sans superflu
    Exemple pour le html : j'ai l'habitude de travailler avec des graphiste intégrateur qui conçoivent les pages web avec des tableaux imbriqué dans des tableaux eux même dans des tableaux.. Qui répètent dans chaque page les mêmes morceaux de code.
    Le code est horrible à dynamiser, imaintenable, totalement inévolutif
    => vive xhtml et css2 !!

    2) Bien commenté
    Pour ma part (dans mes bon jour je met presque 25% de code dans mes script)

    3) Respecter ses convention
    Convention de nomage, de répartition du code dans les fichiers etc...
    L'utilisation de fichier de configuration est fortement conseillé..

    +) Rédiger une note sur la programmation pour ses successeurs


    Bref faire tou ce que je ne fait pas ^^

    Bon code @ tous
    Orthographe => Message Privé constructif svp

  11. #11
    Invité
    Invité(e)

    Par défaut

    Citation Envoyé par SoF_AzraeL
    Un code propre c'est :

    1) un code sans superflu
    Exemple pour le html : j'ai l'habitude de travailler avec des graphiste intégrateur qui conçoivent les pages web avec des tableaux imbriqué dans des tableaux eux même dans des tableaux.. Qui répètent dans chaque page les mêmes morceaux de code.
    Le code est horrible à dynamiser, imaintenable, totalement inévolutif
    => vive xhtml et css2 !!
    D'un autre coté... Moi j'ai eu droit à des individus qui imbriquaient plusieurs blocs <div> sous prétexte de ne pas pouvoir utiliser les tableaux pour stigmatiser leur interface...

    En plus d'utiliser une classe par bloc !

    D'un extrème à l'autre

  12. #12
    Membre habitué Avatar de kagura
    Inscrit en
    avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 360
    Points : 130
    Points
    130

    Par défaut

    Merci pour vos réponses ça m'a fait vraiment plaisir de recevoir pleines de reponses car ça ne m'arrive pas souvent.
    D'autre part, berceker united a dit
    Autre chose. Si vous connaissez un peut l'objet et que vous travaillez en équipe ne faite pas d'objet parce qu'il y a pas pire qu'une personne qui utilise l'objet sans aucune logique c'est pire que tous.
    J'ai essayé de comprendre cela mais j'ai pas compris. Voulez vous etre un peu clair dans ce point là?
    J'ai bien compris ce que veut dire un code libre, mais est ce que tout le monde l utilise?
    « Seuls vos vrais amis savent où vous frappez pour que ça fasse mal. » - Bernard Werber

  13. #13
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : novembre 2005
    Messages : 977
    Points : 959
    Points
    959

    Par défaut

    Ben je crois qu'il voulais dire par utiliser l'objet en équipe n'étant pas une bonne idée si ca modélisation des classes n'a pas bien été fait à la base

    Travailler en équipe sur un projet codé en objet peut se faire a condition d'avoir bien fait le diagramme de classe avec la notion UML par exemple... ainsi une personne peut travailler sur une classe et une autre, sur une autre classe ainsi de suite sans se piller sur les pieds

    Les gens qui code objet sans trop savoir où ils vont, vont avoir tendence a créer des objet superflux sans respecter les patron de conception Orienté-Objet qui sont là, la plupart du temps, pour simplifier et apporter une résolution logique face a une situation...patron parlant ici de Singleton, Bridge,Visiteur, Expert...etc yen a plein
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  14. #14
    Invité
    Invité(e)

    Par défaut

    Citation Envoyé par ozzmax
    Ben je crois qu'il voulais dire par utiliser l'objet en équipe n'étant pas une bonne idée si ca modélisation des classes n'a pas bien été fait à la base

    Travailler en équipe sur un projet codé en objet peut se faire a condition d'avoir bien fait le diagramme de classe avec la notion UML par exemple... ainsi une personne peut travailler sur une classe et une autre, sur une autre classe ainsi de suite sans se piller sur les pieds

    Les gens qui code objet sans trop savoir où ils vont, vont avoir tendence a créer des objet superflux sans respecter les patron de conception Orienté-Objet qui sont là, la plupart du temps, pour simplifier et apporter une résolution logique face a une situation...patron parlant ici de Singleton, Bridge,Visiteur, Expert...etc yen a plein

    Il n'est pas nécessaire d'avoir recours à UML (et tous ses différents diagrammes) ni même aux design patterns lorsqu'on travaille sur des projets PHP amateurs ou "semi-pro", d'une complexité relative.

    Avoir recours à ces méthodes d'analyse / conception devient indispensable lorsqu'on doit résoudre des problèmes complexes, avec un délai et de l'argent en jeu...

    Pour exemple, la plus part des projets OpenSource PHP que je connais, hebergés typiquement par SourceForge (ou non), mettent tout leur code source à disposition sur CVS, à partir de là, contribue qui veut (qui pourra), sans organisation autour de diagrammes UML (doc. et discussion faisant foi).

    ...Surtout que les versions antérieures à PHP 5 ne permettent pas (ou difficilement) l'utilisation des diagrammes de conception UML.

    Ce qu'il voulait dire plus haut est très simple, ne pas faire de l'orienté objet pour faire joli, et éviter de faire de l'orienté objet en équipe tant qu'on en a pas acquis les fondamentaux...


    Bonne journée !

  15. #15
    Membre du Club Avatar de charlene44
    Profil pro
    Étudiant
    Inscrit en
    juin 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2006
    Messages : 87
    Points : 67
    Points
    67

    Par défaut

    1 - toujours commenter son code
    2 - respecter les conventions W3C
    3 - ca c'est mon avis mais : coder en XHTML strict
    4 - utiliser la méthode MVC et ne pas programmer "en spaghetti"
    5 - bien indenter son code.

    je pense que c'est tout....

  16. #16
    Expert confirmé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    février 2005
    Messages
    3 379
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : février 2005
    Messages : 3 379
    Points : 5 423
    Points
    5 423

    Par défaut

    Concernant la conception objet ozzmax résume un peut mes pensé mais je parle par expérience malheureuse que j'ai vécus ou il y avait un developpeur qui connaissait pas réellement la notion objet mais utilisais plutot les facilités de syntaxe. En gros un objet était un sac à fonction avec des variables (attribut) visible depuis chaque "fonction" point barre! ça n'allait pas plus loin. Je du passer derriere lui. J'ai pété un plomb, arrêter une semaine certifié par le medecin . La classe faisait >3000 lignes.

    Donc si vous voulez vous lancer dans l'objet faite le chez vous mais ne le faite pas subire au autre parce que le resultat peut être pire qu'en procédurale.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  17. #17
    Membre habitué Avatar de kagura
    Inscrit en
    avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 360
    Points : 130
    Points
    130

    Par défaut

    Je vois que travailler en faisant un code propre est difficile et travailler avec l objet est pire si j ai bien compris ce que vous venez de dire.
    J ai etudié l objet et la conception avec l objet mais je l ai jamais utilisé dans un projet meme si j en veux vraiment. Il faut juste les moyens pour en faire un
    Merci pour vous tous.
    « Seuls vos vrais amis savent où vous frappez pour que ça fasse mal. » - Bernard Werber

  18. #18
    Invité
    Invité(e)

    Par défaut

    Citation Envoyé par berceker united
    Concernant la conception objet ozzmax résume un peut mes pensé mais je parle par expérience malheureuse que j'ai vécus ou il y avait un developpeur qui connaissait pas réellement la notion objet mais utilisais plutot les facilités de syntaxe. En gros un objet était un sac à fonction avec des variables (attribut) visible depuis chaque "fonction" point barre! ça n'allait pas plus loin. Je du passer derriere lui. J'ai pété un plomb, arrêter une semaine certifié par le medecin . La classe faisait >3000 lignes.

    Donc si vous voulez vous lancer dans l'objet faite le chez vous mais ne le faite pas subire au autre parce que le resultat peut être pire qu'en procédurale.
    Ouais c'est sûr que le risque de burnout est grand avec 3000 lignes à corriger (surtout quand c'est pas toi qui les a tapé !)...

    Cela dit, je serais bien curieux de savoir à quel genre de développeur tu as eu à faire

    C'est une aberration...

  19. #19
    Expert confirmé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    février 2005
    Messages
    3 379
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : février 2005
    Messages : 3 379
    Points : 5 423
    Points
    5 423

    Par défaut

    Citation Envoyé par Guardian_7
    Ouais c'est sûr que le risque de burnout est grand avec 3000 lignes à corriger (surtout quand c'est pas toi qui les a tapé !)...

    Cela dit, je serais bien curieux de savoir à quel genre de développeur tu as eu à faire

    C'est une aberration...
    Ben un developpeur qui à découvert les avantages d'ordre syntaxique et non pas objet car il n'avait aucune notion moi non plus d'ailleur mais je savais que c'étais pas normal. Dedans il y avait de tout un vrai un marché au puce. Connexion à la base, gros contenu HTML, requete dans tous les sens, des functions bidouille et une centaine d'attributs. Bref quand il est partie en vacances ça m'est tombé dessus le patron mes la pression ben j'ai finis par craquer mais comment expliquer que le code est pas bon alors qu'il fonctionne mais comme personne ne connaissait l'objet c'est pas facile à justifier donc....

    Donc pour pas que ça arrive à d'autre ne faite pas d'objet en équipe si vous n'avez pas de notions.

    Autre chose : LES COMMENTAIRES COHERANT.
    C'est pas tous de placer un commentaire mais faut il qu'elle soit compréhensible et utile.
    Des fois je vois ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //requête
    $req = "select ....."
    //Execution de la requête
    $rs = mssql_query($req);
    Non mais ça veut dire quoi ça !... Ce commentaire ne sert à rien.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  20. #20
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : novembre 2005
    Messages : 977
    Points : 959
    Points
    959

    Par défaut

    Citation Envoyé par berceker united
    Autre chose : LES COMMENTAIRES COHERANT.
    C'est pas tous de placer un commentaire mais faut il qu'elle soit compréhensible et utile.
    Des fois je vois ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //requête
    $req = "select ....."
    //Execution de la requête
    $rs = mssql_query($req);
    Non mais ça veut dire quoi ça !... Ce commentaire ne sert à rien.
    Ouais j'avoue que c'est ordinaire comme commentaire héhéhé, ordinaire dans le sens d'inutile.
    Les commentaires dans le code doivent etre là pour nous renseigner sur quelque chose de compliquer pas pour expliquer la ligne qui suit...
    Alors comme ton avis, un sur-commentairage ne fait qu'alourdir le code dponc le rendant difficile a comprendre à simple lecture
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/06/2010, 10h38
  2. Réponses: 6
    Dernier message: 25/05/2007, 09h46
  3. Qu'est ce que ça veut dire ?
    Par feltin dans le forum Zope
    Réponses: 3
    Dernier message: 12/07/2006, 14h12
  4. Vector, est ce que cela vaut la peine
    Par elekis dans le forum SL & STL
    Réponses: 6
    Dernier message: 11/12/2005, 20h22
  5. Qu'est ce que static veut dire
    Par shirya dans le forum C++
    Réponses: 5
    Dernier message: 22/11/2005, 09h50

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