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

C++ Discussion :

Règle de codage chez google


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    En matière d'indentation, il y a deux règles, valables partout:
    1- on indente sous les structures de contrôles, et dans les définitions (struct & co, fonctions...)
    2- on ne mélange pas tab et espace.

    Après tab ou espace, chacun a des arguments pour l'un ou pour l'autre. Mais souvent, il s'agit de mélanger des outils qui ne sont pas configurés pareil, voire pas configurés.

    Pour le reste, c'est toujours la problématique que des gens veulent un style uniforme partout. Certains sont très rigides là dessus, et il ne s'agit pas toujours des premiers concernés (i.e. les développeurs).

    Et vu qu'il s'agit d'un déterrage, on peut dire que depuis les CppCoreguidelines sont sorties et qu'elles méritent d'être employées pour dépoussiérer bien des choses que l'on utilise.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Et vu qu'il s'agit d'un déterrage, on peut dire que depuis les CppCoreguidelines sont sorties et qu'elles méritent d'être employées pour dépoussiérer bien des choses que l'on utilise.
    J'avais pas vu la date, mais le sujet reste d'actualité

  3. #3
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 768
    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 768
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    2- on ne mélange pas tab et espace.
    Si on peut le faire les tabulations c'est pour indenter (début de lignes - à gauche), et les espaces pour "l'ascii art" (en fin de lignes - à droite)

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        var a    = 0;
        var a1   = 0;
        var a2   = 0;
        var b    = 0;
        var b01  = 0;
        var b02  = 0;
        var c    = 0;
        var c001 = 0;
        var c002 = 0;

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Notez que les règles de codage de Google sont désormais ici : https://google.github.io/styleguide/cppguide.html




    L'ASCII art c'est de la cr***e !

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par foetus Voir le message
    Si on peut le faire les tabulations c'est pour indenter (début de lignes - à gauche), et les espaces pour "l'ascii art" (en fin de lignes - à droite)
    Effectivement, c'est la seule façon intelligente de les mixer.

    Dans les faits il n'y a que emacs qui sache faire ça je crois. Du coup, ce n'est pas vraiment utilisable sur un projet où notepad++, emacs, eclipse, QtCreator sont chacun utilisés par une personne différente.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Si c'est à la main que l'on indente en appuyant explicitement sur la touche tab puis des espaces pour aligner les lignes suivantes, on a perdu, et il faut changer d'outil ou apprendre à se servir de celui que l'on utilise. C'est à l'éditeur de prendre en charge cela. Dit autrement, il ne faut pas à avoir à appuyer sur tab, mais juste sur: "aller à une nouvelle ligne" (a.k.a. <entrée>), ou "réindente la(/es) ligne(s) courante(s)" (utile en cas de refactoring/import de code). Si on appuie explicitement sur <tab>, cela veut dire que la tâche de mise en conformité avec le style retenu pour le projet n'est pas automatisable.

    NB: je ne fais pas référence au cas trivial de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <destabs>auto i   = 42;
    <destabs>auto str = "toto"s;
    Mais à celui de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <destabs>auto r   = expression(complexe)
    <destabs>         + une(autre(expression * complexe)) // ici je veux bien que l'on intervienne pour aligner le + sur le =, et encore l'éditeur doit proposer de lui-même un retrait par défaut à défaut d'être intelligent
    <destabs>         - une(dernière);                    // ici, l'indentation doit être automatique!

    La difficulté arrive quand en début de ligne on commence par des tabulations pour indenter une fois par niveau d'imbrication, et autant de fois que nécessaire pour aligner avec la ligne précédente. Tous les outils ne savent pas détecter une continuation de la précédente expression et permettre d’enchaîner tabs puis espaces dans ce cas là, sans parler des développeurs qui pourraient utiliser notepad qu'ils ne verraient pas de différence dans leur process d'indentation.

    C'est pour cela que pour le coup je prêche pour le nivellement par le bas, et que l'indentation intelligemment mixée... je n'y crois pas sur des équipes mixtes en termes d'environnements de développement, et en termes de profils de développeurs.

    NB: pour montrer qu'ils indentent comme des pieds (/avec des outils mal paramétrés), je les envoie sur le portail web du gestionnaire de version, souvent les mélanges d'indentation y sont criants. En général, c'est la conséquence de projet qui impose d'indenter avec des espaces, et d'outils qui n'ont pas été configurés.

    En ce qui me concerne, dans tous les cas, l'indentation (avec ou sans alignement supplémentaire) doit être automatisée : si on passe un outil sur le code, c'est l'outil qui a raison. A nous de bien configurer l'outil.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 479
    Par défaut
    Citation Envoyé par foetus Voir le message
    Si on peut le faire les tabulations c'est pour indenter (début de lignes - à gauche), et les espaces pour "l'ascii art" (en fin de lignes - à droite)
    Tout a fait d'accord! J'avais chercher a repandre la bonne parole dans un blog il y a quelques mois: https://mickaelistria.wordpress.com/...bs-and-spaces/
    L'air de rien ce debat est serieux, il concerne la lisibilite/portabilite du code et il contient des notions de models vs rendering qui sont importantes dans pas mal des domaines. Meme si je n'en ferais pas un critere de selection important en entretien d'embauche, je jetterai le pave dans la mare quand meme pour voir comment reagit la personne (si elle comprend deja la notion de model/rendering, si elle sait pourquoi des gens preferent 2-4-8 espaces pour une tab selon le type de fichier et l'editeur, si elle est ouverte a la discussion ou si elle est bornee en disant "Chez Google ils font comme ca, c'est que c'est mieux" sans presenter d'esprit critique, ...)

    Citation Envoyé par Luc Hermitte Voir le message
    Dans les faits il n'y a que emacs qui sache faire ça je crois. Du coup, ce n'est pas vraiment utilisable sur un projet où notepad++, emacs, eclipse, QtCreator sont chacun utilisés par une personne différente.
    Tous les editeurs savent inserer une tab quand tu appuies sur tab, et un espace quand tu appuies sur espace... A un moment, c'est aussi au developpeur de se poser la bonne question sur 1. ce qu'il cherche a inserer et 2. ce que l'editeur insere effectivement.
    Dans Eclipse IDE, je recommande a tous les utilisateurs avec lesquels j'ai l'occasion de passer du temps a code d'afficher les tabs/espaces avec des caracteres en gris clair ( http://help.eclipse.org/oxygen/topic...ditorprefs.htm > "Show whitespace characteres" ). Jusqu'ici j'ai pas eu de retour negatif sur cette pratique et j'ai eu quelques commentaires tres positifs du genre "ouah, c'est degueulasse! Je savais pas qu'on indentait si mal!"

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2008, 14h24
  2. Règles de codage PHP
    Par muslem dans le forum Langage
    Réponses: 5
    Dernier message: 18/09/2007, 18h08
  3. Les règles de codages
    Par gege2061 dans le forum gtksdl
    Réponses: 0
    Dernier message: 17/06/2007, 21h46
  4. Outil pour règles de codage C/C++
    Par pofet dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 05/06/2007, 08h46
  5. [Question]Règle de codage pascal dfm et class?
    Par QAYS dans le forum Delphi
    Réponses: 2
    Dernier message: 18/04/2007, 11h00

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