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 :

Peut-on définir des normes d’écriture d’un beau code ?


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Data Consultant
    Inscrit en
    Juillet 2013
    Messages
    2 976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Data Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2 976
    Billets dans le blog
    2
    Par défaut Peut-on définir des normes d’écriture d’un beau code ?
    Peut-on définir des normes d’écriture d’un beau code ?
    « Il n'y a pas de style de code correct », il faut être cohérent selon un bloggeur

    L’écriture d’un code qui permet de satisfaire les exigences fonctionnelles et de performance a toujours été la première priorité des développeurs. Au-delà de cet aspect, bon nombre de programmeurs s’attardent un peu sur le style d’écriture de leur code pour faciliter la lecture et la compréhension. Cela permet au développeur de repérer plus facilement les erreurs et également de comprendre ce qu’il essayait de faire lorsqu’il revient sur le projet quelques mois plus tard. Si en plus, d’autres ingénieurs doivent hériter du code, il est généralement conseillé d’adopter un style cohérent qui facilitera la continuité ou la réutilisation du code.

    L’idée d’adopter un style d’écriture cohérent semble faire l’unanimité, mais une question se pose toutefois sur le style à adopter et à ce niveau, beaucoup de mythes demeurent. Ce qui est accepté par un développeur peut être interdit chez un autre, et ce qui est obligatoire chez l’un peut être inutile chez l’autre. Chacun avance des arguments plus ou moins pertinents pour défendre sa position, et sur Developpez.com, bien qu’on ait plusieurs fois débattu sur ce sujet, on n’a jamais pu arriver à un consensus.

    Pour un bloggeur, il y a trop de mythes autour de l’écriture d’un beau code, alors que la règle semble simple : « il n'y a pas de style de code correct, tout comme il n'y a pas de bonne solution à une tâche d'ingénierie », a écrit Marc Newlin. Il pense que les nombreux guides de styles existants écrits dans l’absolu peuvent être utiles, mais manquent souvent de prendre en compte que le contexte d'un projet est aussi important que le code lui-même.

    Marc Newlin s’est donc proposé, à travers son billet, de briser ces mythes au sujet de la manière d’écrire un beau code.

    Pour lui, c’est une erreur de penser que l’utilisation de commentaires verbeux et d’espaces blancs font de vous un mauvais programmeur. Certains développeurs font valoir que les commentaires sont redondants, mais selon Newlin, c’est peut-être parce qu’ils oublient qu’il est plus facile de comprendre quelques phrases dans notre langue maternelle que le code directement dans un langage. Si ces derniers arrivent facilement à comprendre un code sans commentaire, ils pourraient toutefois gagner du temps à analyser la version commentée. Pour être efficace, le bloggeur pense qu’il est logique de commenter tôt et bien souvent, et les espaces viennent en compléments des commentaires pour faciliter la lecture du code.

    Un autre problème auquel il s’attaque est la guerre autour des conventions de nommage. Pour Newlin, « il n’y aura jamais de gagnant, c’est une guerre inutile. Tout le monde a une préférence sur les conventions de nommage, et certains langages préfèrent massivement un style plutôt que l'autre. La seule chose qui importe est la cohérence. »

    Ce qu’il propose donc lorsque vous travaillez sur un projet existant, c’est de suivre les conventions déjà en place. Et si vous débutez un nouveau projet, la logique serait de définir les conventions de nommage que vous souhaitez utiliser, et de vous tenir strictement à cela. Dans le cas où vous travaillez sur un projet dans un langage avec un guide de style, « il est bon de suivre les conventions de nommage définies dans le guide », a-t-il écrit.

    Vous avez peut-être entendu certains développeurs dire que l’utilisation de bibliothèques tierces est une mauvaise chose. Là encore Marc Newlin pense qu’il s’agit d’une erreur de la part d’un développeur qui aime ressentir la fierté d’avoir écrit un code complexe en seulement 2 jours. Newlin pense que si ce dernier avait avant tout effectué une recherche sur Google, il aurait surement trouvé une bibliothèque sous licence MIT/BSD qui fait exactement ce qu’il veut, sinon mieux. Il aurait alors gagné 2 jours pour améliorer son programme, au lieu d’essayer d’avoir la propriété complète sur son code.

    Pour Marc Newlin, le plus important, c’est d’écrire votre code de sorte qu’un étudiant en informatique de première année puisse le lire, un beau code se doit d’être simple. Il ajoute également qu’un programmeur éclairé va chercher à être plus productif en étant assez humble pour utiliser des bibliothèques tierces si possible. Cela lui éviterait d’écrire beaucoup. Il devrait également utiliser le plus de commentaires possibles.

    Source : Blog de Marc Newlin

    Et vous ?

    Partagez-vous les points de vue de Marc Newlin ?

    Qu'est ce qui caractérise un beau code selon vous ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Par défaut
    Ma foi, tout ceci n'est que du bon sens, toujours utile de rappeler puisqu'il parait que nous, les ingénieurs dév, sommes particulièrement susceptibles

  3. #3
    Membre averti

    Profil pro
    Java/Jee
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Java/Jee

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Billets dans le blog
    1
    Par défaut
    Plein de bon sens tout ça.

    Il n'y a rien de pire pour un développeur de pester contre un code mal écrit et de se rendre conpte qu'on est celui qui l'a écrit.
    Ne pas oublier lors du développement d'une application qu'en général le temps de maintenance sera plus important que le temps de réalisation initial.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Par défaut
    Je dirais qu'un beau code est un code avec de belles couleurs et des polices de caractères bien choisies.




    Désolé...

  5. #5
    Membre éclairé Avatar de dfiad77pro
    Homme Profil pro
    Responsable Architecture logicielle
    Inscrit en
    Décembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Architecture logicielle
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 545
    Par défaut
    Citation Envoyé par Sicyons Voir le message
    Je dirais qu'un beau code est un code avec de belles couleurs et des polices de caractères bien choisies.


    Désolé...

    C'est pas si hors- sujet que ça

    Perso j'utilise la même coloration syntaxique/Police en JAVA/C# et quelque soit L'IDE, je m'y retrouve mieux.

  6. #6
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    La couleur et la police dépendent de l'éditeur de texte utilisé.

    Pour moi il y a des caractéristiques d'un "beau code" :
    • Le respect des conventions d'écriture du langage (ex: pour Java, pour C#, pour PHP)
    • L'indentation à 4 espaces, ne jamais utiliser la tabulation \t car l'affichage varie en fonction de l'éditeur de texte utilisé.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  7. #7
    Membre éclairé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 179
    Par défaut
    Citation Envoyé par Gugelhupf Voir le message
    La couleur et la police dépendent de l'éditeur de texte utilisé.[*]L'indentation à 4 espaces, ne jamais utiliser la tabulation \t car l'affichage varie en fonction de l'éditeur de texte utilisé.[/LIST]
    Mais quelle horreur 4 espaces ! Ça ne va pas du tout c'est 3 espaces qu'il faut !
    La seule vrai bonne normes d'écriture d'un beau code c'est l'équipe qui développe qui la défini (comme dit dans l'article). Mais c'est frustrant d'arrivé dans un projet déjà commencé avec des normes qui ne correspondent pas à nos habitude.
    Parce que ma blague sur les espaces, elle est un peu vrai, je fais mes projets avec 3 espaces, au travail avec des \t les projets que je fork ça dépens.

    Ce qu'il faudrait c'est un descripteur de normes pour le projet pour qu'il soit toujours versionné avec les mêmes normes et un descripteur de normes perso sur chaque poste pour les dev l'IDE faisant les conversions automatiquement.

  8. #8
    Invité
    Invité(e)
    Par défaut
    D'ailleurs, en parlant de beau code, c'est quand qu'on brule la "K&R style" ?

    Pas taper

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Par défaut
    Effectivement du bon sens et il faut toujours se rappeler certains principe comme KISS

    Et pour ce qui est de l'utilisation de bibliothèques tierces, je ne peurx qu'appuyer si celles-ci ne sont pas un obscur projet connu par deux personnes dans le monde. On a toujours avantage à utiliser des standards connus et partagés, la maintenabilité en est grandement améliorée.

  10. #10
    Membre confirmé

    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 120
    Billets dans le blog
    1
    Par défaut Les guidelines sont indispensables
    Personnellement j'utilise la norme aviva en C# : https://csharpguidelines.codeplex.com/
    Il est indispensable de choisir soigneusement des Guidelines avant de débuter un projet et de s'y tenir fermement surtout si plusieurs codeurs travaillent sur le même projet.

  11. #11
    Membre éprouvé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 462
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 462
    Par défaut
    Citation Envoyé par jdddeschamps Voir le message
    Personnellement j'utilise la norme aviva en C# : https://csharpguidelines.codeplex.com/
    Il est indispensable de choisir soigneusement des Guidelines avant de débuter un projet et de s'y tenir fermement surtout si plusieurs codeurs travaillent sur le même projet.
    Interessant ce pdf, je le garde sous le coude

    par contre, tout est toujours sujet à débat.

    En l'occurence :
    AV1545 Don’t use if-else statements instead of a simple (conditional) assignment 
    Express your intentions directly. For example, rather than
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    bool pos;
    if (val > 0) 
    { 
     pos = true; 
    } 
    else 
    { 
     pos = false; 
    }
    write
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool pos = (val > 0); // initialization
    Or instead of
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    string result; 
     
    if (someString != null) 
    { 
     result = someString; 
    } 
    else 
    { 
     result = “Unavailable”; 
    } 
     
    return result;
    write
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    return someString ?? “Unavailable”;
    Je suis d'accord avec cette règle (et en généralisation, j'aime bien l'opérateur ternaire sur des condition/résultat simples et direct), mais la plupart de mes collègues sont complètement contre.

  12. #12
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 255
    Par défaut
    Citation Envoyé par Gugelhupf Voir le message
    L'indentation à 4 espaces, ne jamais utiliser la tabulation \t car l'affichage varie en fonction de l'éditeur de texte utilisé.
    AH non, sacrilège, l'indentation, c'est 2 espaces, pas 4 ! Non, mais on va-t-on ?

    Citation Envoyé par AoCannaille Voir le message
    Je suis d'accord avec cette règle (et en généralisation, j'aime bien l'opérateur ternaire sur des condition/résultat simples et direct), mais la plupart de mes collègues sont complètement contre.
    Et moi je donne raison à ..... toi et tes collègues.

    Ces règles sont effectivement plus facile à écrire, et sont plus condensées, compréhensibles de prime abord (quoique j'ai toujours un peu plus de mal avec le second exemple).
    Par contre, lors de la recherche d'un bug un peu tordu, elles peuvent favoriser le fait qu'un cas d’exécution passe inaperçue car en lisant rapidement le code on interprète pas toujours, ou pas toujours correctement ces lignes-là.
    Alors qu'un IF..ELSE classique, même en survolant le code, on le loupe pas.

    Bref, je fais parti des mitigés qui les utilisent au codage et rouspète après le codeur de les avoir utilisées lors d'analyse ou de recherche de plantage pas facile à trouver.

    Sinon pour en revenir au sujet : Peut-on définir des normes d’écriture d’un beau code ?
    Oui, mais cette norme sera différente d'une équipe à l'autre, voire d'un projet à l'autre.
    Le plus important n'est pas la norme, le plus important est qu'elle soit clairement et explicitement définie, respectée, appliquée et défendue par tous et partout ou elle s'applique.
    Au delà de la norme, comme il a été dit, c'est la cohérence qui prime.

  13. #13
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 805
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    AH non, sacrilège, l'indentation, c'est 2 espaces, pas 4 ! Non, mais on va-t-on ?
    Pour être exact 2 espaces pour le HTML, javascript, XML [autres] et 4 espaces pour les vrai langages: C, C++, Java [autres]

    Mais mon IDE actuel (C++ Builder) considère une tabulation comme 3 espaces

    L'idée du nombre d'espaces c'est d'éviter de coder des lignes trop longues (le strict c'est 80 colonnes) et d'avoir trop d'imbrications (par exemple 3 - 4 boucles imbriquées)
    C'est pour cela certains mettent 6 ou 8 espaces


    Enfin il faut mettre des tabulations en début de ligne, mais ensuite sur la ligne il faut mettre des espaces (pour aligner des affectations par exemple.)

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par foetus Voir le message
    le strict c'est 80 colonnes
    Oui, mais c'était plus avant... Maintenant, on a de grands écrans, souvent double, cette règle est un peu désuète depuis le temps non ? Surtout que desfois, en Java, on peut vite y arriver !

  15. #15
    Membre éprouvé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 462
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 462
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    Et moi je donne raison à ..... toi et tes collègues.

    Ces règles sont effectivement plus facile à écrire, et sont plus condensées, compréhensibles de prime abord (quoique j'ai toujours un peu plus de mal avec le second exemple).
    Par contre, lors de la recherche d'un bug un peu tordu, elles peuvent favoriser le fait qu'un cas d’exécution passe inaperçue car en lisant rapidement le code on interprète pas toujours, ou pas toujours correctement ces lignes-là.
    Alors qu'un IF..ELSE classique, même en survolant le code, on le loupe pas.

    Bref, je fais parti des mitigés qui les utilisent au codage et rouspète après le codeur de les avoir utilisées lors d'analyse ou de recherche de plantage pas facile à trouver.
    C'est pour ça que je dis que tout est toujours sujet à débat. Personnellement je trouve cela bien plus clair, et si le cas passe inaperçu à la relecture, c'est que l'auteur de la relecture manque de rigueur.

    Le seul inconvénient que je constate coté debug/maintenance c'est qu'en général le debugger passe juste la ligne, sans passer "visuellement" dans le cas traité.

    Dans une mission avionique, on avait un analyseur syntaxique qui remontais des erreurs à chaque non respect de la charte. Et s'il y avait des erreurs, il n'y avait pas de Qualif'. Autant dire que ça blaguait pas trop sur la syntaxe... (mais bon, dans ce cas là, les règles étaient l'exact inverse de celles proposées par Aviva)

  16. #16
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 255
    Par défaut
    Citation Envoyé par AoCannaille Voir le message
    et si le cas passe inaperçu à la relecture, c'est que l'auteur de la relecture manque de rigueur.

    Le seul inconvénient que je constate coté debug/maintenance c'est qu'en général le debugger passe juste la ligne, sans passer "visuellement" dans le cas traité.
    Tu viens de donner le cas le plus courant de ce soit-disant manque de rigueur, qui n'en est pas un.
    En debug, le problème ne vient pas toujours de la ligne qui fait planter, il peut se situer bien plus haut, sur des lignes ou on y passe un peu trop vite, ou, comme tu dis, sur des lignes offrants plusieurs cas et où en exécutant un peu rapidement on ne voit pas que c'est le mauvais cas qui est traité.

    C'est pour la même raison que je n'aime pas les conditions IF...ELSE inline, les lambda, les appels ou cascades d'appel de fonctions dans les paramètres de fonctions, etc... Et malgré tout, j'en écrit quand même quasiment tous les jours.

  17. #17
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Autant le dire tout de suite, je n'ai pas lu toues les réactions, mais, selon moi :

    Effectivement, l'utilisation d'une bibliothèque "éprouvée" devrait être de l'ordre du réflexe (pourquoi se faire ch..er à (mal) faire ce que d'autres ont déjà fait et qui, surtout, dispose du recul nécessaire pour assurer que ca fait les choses correctement grâce à de nombreux utilisateurs ?)

    Le style de codage, je suis également totalement d'accord : il faut être cohérent au sein d'un projet, mais il n'y a pas vraiment de "bon" ni de "mauvais" style de codage. Il faut avoir assez de souplesse pour être en mesure de s'y retrouver quel que soit le style utilisé.

    Il y a cependant une chose que je n'ai pas lue dans la nouvelle, mais qui me semble importante : le choix des noms (de variables, de fonctions et de types ) : plus on arrivera à exprimer clairement ce que font les choses au travers de leur nom, plus il sera facile de comprendre le code.

    Enfin, je ne suis pas du tout de l'avis de l'auteur du blog en ce qui concerne les commentaires . Oui, je suis d'accord avec le fait qu'il est sans doute plus facile de comprendre deux lignes de commentaires écrits dans sa langue natale que deux lignes de code, mais il ne faut pas oublier qu'un code est quelque chose qui évolue en permanence. Le problème des commentaires, c'est qu'ils finissent très rapidement par être "désynchronisés" par rapport au code auquel il font référence, et, à ce moment là, il devient dangereux de se fier au commentaires plutôt qu'au code. Et si c'est pour -- de toutes façons -- devoir lire le code pour s'assurer qu'il fait ce que prétendent les commentaires, autant "zapper" l'étape qui consiste à lire les commentaires, cela fera toujours moins de lecture

    Ceci dit, je crois personnellement qu'il y a trois types de commentaires :
    • Les cartouches (en gros, ceux qui pourraient permettre la génération automatique de documentation grâce à javadoc ou à doxygen par exemple) : qui expliquent à quoi sert une classe / une fonction / une variable, les pré et post conditions à leur utilisation, le resultat auquel on est en droit de s'attendre, les éventuelles exceptions qui seront lancées etc.
    • Les commentaire "pédagogiques" : ce sont des commentaires spécialement destinés aux "débuttants" qui permettent simplement de poursuivre une explication directement à l'intérieur du code
    • Les commentaires "paraphrasiques" : les commentaires qui se contentent de dire ce que le code fait, sans apporter la moindre plus value.


    A mon sens, seules les deux premiers types de commentaires (cartouches et commentaires pédagogiques) ont réellement du sens :
    • Le cartouche parce qu'ils font référence à la partie la plus stable du projet : l'interface qui devra être utilisée pour manipuler les différentes données.
    • Les commentaires pédagogiques, au début, pour permettre d'attirer l'attention du récipiendaire sur certains apsects du langage qu'il apprend.

    Quand aux commentaires qui se contentent de paraphraser le code, je suis désolé, mais, à mon sens, ils n'apportent strictement rien et pire encore: ils sont souvent plus nuisibles qu'autre chose. Trop souvent un commentaire qui paraphrase le code va être écrit pour une version bien particulière du code, mais ne sera pas mis à jour lorsque le tronçon de code auquel il fait référence sera modifié. On en arrive alors à des situations ubuesques dans lesquels le commentaire dit une chose alors que le code en dit une autre et ca, c'est réellement de nature à nous faire perdre encore plus de temps dans la compréhension du code.

    Pour moi, le meilleur commentaire sera celui que l'on ne devra pas écrire : si l'on choisit correctement les noms des variables, des fonctions et des types, si l'on veille un minimum à respecter le principe de la responsabilité unique, le code devrait en permanence arriver à se suffire à lui-même et les commentaire paraphrasiques deviennent de facto inutiles
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  18. #18
    Membre expérimenté Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    Par défaut
    Citation Envoyé par AoCannaille Voir le message
    Je suis d'accord avec cette rège (et en généralisation, j'aime bien l'opérateur ternaire sur des condition/résultat simples et direct), mais la plupart de mes collègues sont complètement contre.
    Dans tous langage de programmation, il y a des mécanismes fondamentaux (turing-complet) et des mécanismes additionnels. Ces mécanismes additionnels sont toujours des spécialisations des mécanismes fondamentaux. Par exemple la boucle for() est une spécialisation de la boucle while() et l'opérateur ternaire est une spécialisation de la structure de condition if(). En général il y a des cas très clairs où le mécanisme additionnel est plus adapté que sa version fondamentale, et d'autres moins. Il est possible d'écrire un code en n'utilisant qu'uniquement des boucles while() mais c'est faire abstraction des outils proposés par le langage et donc témoigne implicitement d'une méconnaissance des outils du langage. Le code est souvent moins beau aussi car la lisibilité apportée par ces mécanismes additionnels fait aussi partie du cahier des charges d'un langage. La boucle for ( : ) parcourant un conteneur en est un parfait exemple.

    En l'occurence, cet exemple du PDF correspond exactement à ce pour quoi l'opérateur ternaire est conçu. Evidemment, il ne sera jamais obligatoire d'utiliser un opérateur ternaire au lieu d'une condition "classique" mais dans un cas qui correspond à son profil, utiliser un if() au lieu d'un ternaire induira chez le lecteur éclairé une impression de méconnaissance du langage de la part de l'auteur. Quand à répliquer le retour d'une expression booléenne, c'est tout simplement stupide et plus confusant qu'autre chose pour un développeur expérimenté.

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut
    Citation Envoyé par Gugelhupf
    L'indentation à 4 espaces, ne jamais utiliser la tabulation \t car l'affichage varie en fonction de l'éditeur de texte utilisé.
    Justement je trouve que le \t a cet avantage là : laisser le choix à un utilisateur quant à son indentation. Un éditeur de code un tant soit peu bien fait devrait faire ça !

    Citation Envoyé par Angelsafrania
    Ce qu'il faudrait c'est un descripteur de normes pour le projet pour qu'il soit toujours versionné avec les mêmes normes et un descripteur de normes perso sur chaque poste pour les dev l'IDE faisant les conversions automatiquement.
    Y a là une bonne idée de projet mais je crois que ça commence déjà à se faire.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 106
    Par défaut
    Salut à tous!

    Je me dois un petit peu de réagir sur ce genre de débat qui est souvent présent sur DVP

    Tout ce que vous décrivez, je l'ai vécu pas mal dans différents projets, dès que je change de boite, les mentalités changent, les équipes changent et leurs habitudes/normes aussi.

    Pour ma part, je ne me prends plus la tête avec tout ce qui est indentation, les accolades en fin de ligne ou à la ligne, etc etc.... Il y a des normes, chacun a ses habitudes... etc etc là aussi.
    Je travaille souvent avec des langages populaires comme Java, C ou encore C# et pour cela, j'ai découvert un projet magique qui m'a changé la vie: Artistic Style!
    http://astyle.sourceforge.net/

    Vous rentrez les paramètres de formatage et cela transforme votre code. Personnellement, a chaque début de projet, je le configure selon l'équipe (car même si je respecte les normes de codage, j'ai déjà travaillé avec des équipes qui préféraient leurs règles qui vont parfois à l'encontre des bonnes pratiques....) et je l'ajoute en automatique à GIT. Ainsi, dès que je pousse du code, ce dernier est automatiquement formaté comme demandé et à l'inverse, dès que je récupère du code, il est formaté selon mes préférences (et au cas où vous vous poseriez la question, le code est formaté avant les merges, bien évidemment)
    Vous pouvez tout paramétrer: indentation X espaces, la place des accolades, l'espacement avant et après les blocs, les fins de lignes (\n ou \n\r), le placement des étoiles désignant les pointeurs en C (un débat éternel là aussi)...

    Voilà, un petit coup de pub, à essayer
    Et effectivement, comme dit axellink, ce genre de projet voit le jour de plus en plus!

    Après cela ne fonctionne pas pour tous les langages. Mais du coup, certains IDE deviennent intelligents. Par exemple, je travaille dernièrement en Python et Golang, où la compilation dépend du formatage. Des éditeurs comme Sublime Text permettent d'intenter correctement le code à chaque sauvegarde.

Discussions similaires

  1. Peut-on définir des fonctions dans un script ?
    Par nchristedem dans le forum MATLAB
    Réponses: 20
    Dernier message: 11/08/2009, 12h38
  2. Peut-on regrouper des feuilles Excel contenant du code VBA ??
    Par souheil59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/11/2008, 12h43
  3. Peut-on définir des constantes en CSS ?
    Par JeanMarc_T2k dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 29/02/2008, 15h30
  4. Réponses: 2
    Dernier message: 17/01/2007, 10h24
  5. Réponses: 1
    Dernier message: 04/01/2007, 23h52

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