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

Débats sur le développement - Le Best Of Discussion :

Qu'est-ce qu'un code "propre" selon vous ?


Sujet :

Débats sur le développement - Le Best Of

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : décembre 2004
    Messages : 96
    Points : 110
    Points
    110
    Par défaut Qu'est-ce qu'un code "propre" selon vous ?
    Qu'est-ce qu'un code "propre" selon vous ?

  2. #2
    Membre expérimenté Avatar de chaplin
    Profil pro
    Inscrit en
    août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 1 215
    Points : 1 674
    Points
    1 674
    Par défaut
    Citation Envoyé par souviron34
    Ce qui se conçoit bien s'énnonce clairement
    D'un point de vue plus subjectif, quand un code est propre, on a envie de le lire par opposition à sale ou dégoutant.

  3. #3
    Membre du Club
    Profil pro
    Développeur C#, Python, dans la carte à puce
    Inscrit en
    mars 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C#, Python, dans la carte à puce
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2009
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Un code propre permet une lisibilité correcte et surtout une maintenance simplifiée.

    Des bugs simples (syntaxes, inattention etc.) se trouvent beaucoup plus rapidement corrigés avec un code "propre".

    Comment rendre propre son code ?

    Un certain nombre de points doit être pris en considération dés qu'on commence à coder un programme :

    - Structuration du code : Indentation, noms de fonction, classes, variables "explicites" (une variable représentant l'âge, appelez-la age et pas x). Respectez les conventions (ex : nommage des classes : première lettre en majuscule)

    - Savoir commenter son code : Expliquer ce que fait telle fonction, telle partie un peu complexe du code. Ne pas tomber non plus dans l'effet pervers de vouloir tout commenter. La fonction printf a rarement besoin d'être commentée, on sait ce qu'elle fait.

    - Découper le programme : Tâcher de séparer les parties logiques de votre code en créant des fonctions, classes pour chaque entité logique. La classe ConnexionBDD n'a sans doute pas besoin d'implémenter la méthode envoyerMail().

    Voila comme ça ce qui me vient à l'esprit.

  4. #4
    Membre habitué Avatar de rakakabe
    Développeur informatique
    Inscrit en
    août 2007
    Messages
    124
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2007
    Messages : 124
    Points : 166
    Points
    166
    Par défaut
    Un code propre pour moi c'est un code qu'on lit sans trop d'effort (comprehension rapide, meme sans commentaire).

    Plus important encore, un code propre c'est un code que j'ai pas envie de remplacer par d'autres lignes.

  5. #5
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 386
    Points
    8 386
    Par défaut
    D'après toutes les réponses apportées jusqu'ici, code propre signifierait donc code lisible (bien présenté) ? Je ne suis pas de cet avis. Selon moi, un code est dit propre s'il contient un minimum de valeurs "hard-codées", n'appelle pas de fonction d'arrêt prématuré du programme, déclare "const" un objet qui n'est pas garanti être modifiable, etc.

  6. #6
    Membre expérimenté Avatar de chaplin
    Profil pro
    Inscrit en
    août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 1 215
    Points : 1 674
    Points
    1 674
    Par défaut
    J'oubliais, pas d'instruction GOTO dans les programmes. Par soucis de comptabilité certains langages conservent cette instruction.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    janvier 2007
    Messages
    10 591
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 591
    Points : 17 295
    Points
    17 295
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Melem Voir le message
    D'après toutes les réponses apportées jusqu'ici, code propre signifierait donc code lisible (bien présenté) ? Je ne suis pas de cet avis.
    Si, cela en fait partie, même si ce n'est pas exhaustif..

    Mais c'est un élément essentiel..


    Citation Envoyé par Melem Voir le message
    Selon moi, un code est dit propre s'il contient un minimum de valeurs "hard-codées", n'appelle pas de fonction d'arrêt prématuré du programme, déclare "const" un objet qui n'est pas garanti être modifiable, etc.
    0 serait mieux que "minimum".

    Point 2 vrai, mais cela dépend des contextes. Dans un contexte d'applications d'usage réel, cela devrait être vrai..

    Point 3, bof..

    Principalement, c'est : bien structuré, prend bien en compte les erreurs, les variables et les noms de fonctions / méthodes / etc. ont des noms compréhensibles, descriptifs, pas trop à rallonge, comprend des commentaires là où il faut (pas partout), donne les références exactes quand un algo est tiré de quelque part, une entête explicative par fichier, les fichiers portent des noms compréhensibles et descriptifs, etc etc..

    La lisibilité du code fait partie de cela (indentations, différences entre variables globales et locales, entre noms de fonctions / méthodes locales et externes, structuration des répertoires, etc etc).


    Bref, un code propre est un code permettant à quelqu'un qui ne le connaît pas mais connaît le but de l'application de s'y retrouver facilement.

    Idéalement quelqu'un devrait être capable de comprendre à peu près n'importe quoi y compris d'une très grosse application en moins d'une demie-journée.



    @chaplin : je rougis d'être cité
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #8
    Membre expérimenté Avatar de chaplin
    Profil pro
    Inscrit en
    août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 1 215
    Points : 1 674
    Points
    1 674
    Par défaut
    Citation Envoyé par souviron34
    @chaplin : je rougis d'être cité
    - C'est une parole de sage , et comme je tu l'as cité plusieurs fois et de façon plus ou moins développée, ça me fait penser :

    En outre, éviter les redondances de code, c'est à dire executer le même jeux d'instructions plusieurs fois dans un programme, c'est le fondement de la programmation procédurale, valable aussi en POO .

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 1 958
    Points : 2 379
    Points
    2 379
    Par défaut
    Citation Envoyé par Melem Voir le message
    D'après toutes les réponses apportées jusqu'ici, code propre signifierait donc code lisible (bien présenté) ? Je ne suis pas de cet avis. Selon moi, un code est dit propre s'il contient un minimum de valeurs "hard-codées", n'appelle pas de fonction d'arrêt prématuré du programme, déclare "const" un objet qui n'est pas garanti être modifiable, etc.
    Ce que tu donnes est aussi un critère de lisibilité.
    J'insiste sur le « aussi » car ce n'est bien sûr pas seulement ça.

  10. #10
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : novembre 2006
    Messages : 1 252
    Points : 1 907
    Points
    1 907
    Par défaut
    Citation Envoyé par chaplin Voir le message
    J'oubliais, pas d'instruction GOTO dans les programmes.
    Non, il ne faut pas bannir le goto de façon si définitive. En certaines circonstances, son utilisation est tout à fait légitime.

    Un code propre est avant tout un code qui respecte les règles qualités qui le concerne. Des exemples de règles ont été données ici, mais si certaines de ces règles sont universelles, d'autres sont bel et bien contextuelles.

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    janvier 2007
    Messages
    10 591
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 591
    Points : 17 295
    Points
    17 295
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Tommy31 Voir le message
    Non, il ne faut pas bannir le goto de façon si définitive. En certaines circonstances, son utilisation est tout à fait légitime.

    Un code propre est avant tout un code qui respecte les règles qualités qui le concerne. Des exemples de règles ont été données ici, mais si certaines de ces règles sont universelles, d'autres sont bel et bien contextuelles.
    tout à fait.

    Cependant, pour le goto, cela semble (malheureusement) enseigné .. Et comme il est dispo dans une majorité de langages, utilisé pas mal par de jeunes débutants.

    Comme son utilisation - recommandée - est pour un très petit nombre de cas vraiments spécifiques, il est à mon avis judicieux de mettre en à priori et en gros "à bannir SAUF..." plutôt que "existe, mais très peu recommandé dans ....", la liste y étant beaucoup plus longue...

    Disons que dans un thread comme celui-ci, il n'est pas forcément besoin de le spécifier (vu qu'il fait partie (à contrario) du chapitre d'une conception claire), mais au vu du nombre de posts de jeunes l'utilisant, j'aurais tendance à penser que affirmer régulièrement que ce nest pas à utiliser est quand même utile...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Un code propre pour moi c'est aussi un code 'stupide'.
    En tout cas très simple, facilement lisible, facilement compréhensible
    et facilement deboguable par quelqu'un d'autre.

    Qui utilise des design patterns documentes plutot que des petit bijoux de
    conception logiciel que personnes d'autre ne poura jamais comprendre.

    Si tu écris un morceau de code tres intelligent, en cas de probleme il faudra
    etre encore plus intelligent pour le comprendre. En debugging il faut presque etre 2X plus intelligent que le code .... (j'avais lu ca qqpart).

    De toute façon dans chaque boite, dans chaque langage et meme parfois projet les gens font des choix differents, d'indentation de nommages etc, le plus important c'est de tous coder de la meme facon et d'arriver a bosser sur le code des autres.

  13. #13
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 386
    Points
    8 386
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Ce que tu donnes est aussi un critère de lisibilité.
    J'insiste sur le « aussi » car ce n'est bien sûr pas seulement ça.
    En fait, c'est surtout parce que quand un code est propre, il est généralement plus lisible que la version non propre. Mais un code propre n'est pas forcément lisible et un code lisible n'est pas forcément propre, j'insiste surtout sur le deuxième cas. Donc lisibilité (bonne présentation) et propreté pour moi sont deux choses bien différentes.

  14. #14
    Expert éminent sénior
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    6 678
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : décembre 2007
    Messages : 6 678
    Points : 30 975
    Points
    30 975
    Par défaut
    un code propre est lisible, on l'a vu. Il ne comprend que ce qui est nécéssaire - donc le code doit être mutualisé, peu importe comment. Et il évite le spaghetti(qui ne nécéssite hélas pas de goto, des procédures/méthodes mal rangées peuvent avoir un effet désastreux sur la maintenabilité du code).

    perso, le goto, c'est uniquement goto fin-procédure, pour éviter un else à 300 lignes. Question de gout.

    Ce que dit andr386 est important aussi, mais n'est pas forcément de la propreté de code, c'est juste une bonne pratique. Le super code de la mort peut être parfaitement lisible, propre, clair...et peu compréhensible.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  15. #15
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    décembre 2004
    Messages
    2 492
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2004
    Messages : 2 492
    Points : 4 063
    Points
    4 063
    Par défaut
    Pour paraphraser ce qui a été dis, la programmation objet va naturellement dans le sens d'un code plus "propre".
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  16. #16
    Membre du Club
    Inscrit en
    avril 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : avril 2004
    Messages : 37
    Points : 42
    Points
    42
    Par défaut
    un code respectant le standard du langage ou de l'api du framework dont il s'appuit.
    Donne à coder à Toto ,tu le nourris 1 jour.
    Apprends le à coder , tu le pourris toute 1 vie.

  17. #17
    Membre du Club
    Profil pro
    Développeur C#, Python, dans la carte à puce
    Inscrit en
    mars 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C#, Python, dans la carte à puce
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2009
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Pas nécessairement, il est très aisé de faire du code "malpropre" en objet. L'abstraction rajoute quand même une difficulté parfois difficile à maîtriser qui se traduit dans beaucoup de code par une lisibilité moindre et une complexification du code accrue.

    En fait, le problème est souvent le même : savoir respecter des conventions, documenter son code, bien concevoir son application etc. (tout ce qui a été dit en gros).

  18. #18
    Membre du Club
    Inscrit en
    avril 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : avril 2004
    Messages : 37
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par gwenBZH Voir le message
    En fait, le problème est souvent le même : savoir respecter des conventions, documenter son code, bien concevoir son application etc. (tout ce qui a été dit en gros).
    une convention est standardisée,
    le standard est documenté
    on ne parle de conception que lorsqu'elle est est standardisée.
    Donne à coder à Toto ,tu le nourris 1 jour.
    Apprends le à coder , tu le pourris toute 1 vie.

  19. #19
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    décembre 2004
    Messages
    2 492
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2004
    Messages : 2 492
    Points : 4 063
    Points
    4 063
    Par défaut
    Citation Envoyé par gwenBZH Voir le message
    Pas nécessairement, il est très aisé de faire du code "malpropre" en objet. L'abstraction rajoute quand même une difficulté parfois difficile à maîtriser qui se traduit dans beaucoup de code par une lisibilité moindre et une complexification du code accrue.
    L'objet va dans le sens d'un code plus propre. Est-ce vraiment nécessaire ne préciser "quand on sait utiliser correctement l'objet" ? Toi même tu nous parles de maintenance simplifiée, de découper le programme. etc. Ces bonnes intentions sont à l'origine de la programmation objet.
    Cf. à ce sujet les 5 principes fondamentaux (SOLID) qui accompagnent la programmation objet.

    PS : et vive Quimper
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  20. #20
    Inactif  
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 1 958
    Points : 2 379
    Points
    2 379
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    L'objet va dans le sens d'un code plus propre. Est-ce vraiment nécessaire ne préciser "quand on sait utiliser correctement l'objet" ? [...]
    Mais si tu précises que le développeur sait développer correctement, le problème ne se pose plus et tous les paradigmes deviennent lisibles… Par contre si tu prends des développeurs moyens qui ont des défauts, est-ce vraiment mieux ? Et des débutants ? Là c'est tout de suite moins évident.
    Et pis « plus propre que quoi » ? Que toutes les autres manières de faire ? C'est un peu rapide comme jugement.

    La lisibilité du code ne repose pas beaucoup sur le paradigme… à la limite sur le langage, mais alors Java et C++ produise selon moi du code plutôt moche. OCaml, Pascal et Smalltalk par contre font du bon travail de ce côté. J'en met un fonctionnel, un procédural et un OO exprès bien sûr.

Discussions similaires

  1. Qu'est ce que cela veux dire un "code propre" selon-vous ?
    Par kagura dans le forum Général Conception Web
    Réponses: 45
    Dernier message: 09/02/2016, 15h22
  2. [Tableaux] Retour chariot pour un code HTML propre
    Par beastman007 dans le forum Langage
    Réponses: 10
    Dernier message: 09/03/2006, 18h43
  3. Code CSS propre
    Par keawee dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/10/2005, 22h59

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