Partage
  • Partager sur Facebook
  • Partager sur Twitter

[war] Styles d'écriture C

Quel style pour vous ?

    5 décembre 2005 à 20:13:16

    Un vrai forum C ne saurait se passer de ce genre de flamewar sur The One True ... Style. Je propose que les zéros discutent ici tranquillement des styles qu'ils utilisent en C. Vous avez le droit d'être religieux mais pas d'attaques personnelles du genre : "Ouais c'est un truc de newbs" même si vous le pensez très fort. De même pas de jugements de valeur sur les personnes que vous pourriez être amenés à citer, par exemple "De toute façon, Wirth disait n'importe quoi donc son style pue" ou "RMS il a fait trop de LISP, ça nuit à la santé mentale de son style C".

    Si le topic marche bien, je compilerai les résultats de chaque argumentation en catégories et mettrai le tout dans ce premier post afin que les nouveaux codeurs puissent se faire un avis.

    Vous êtes libre de dire ce que vous voulez sur votre style préféré ou sur le(s) style(s) que vous dénigrez mais je vous suggère les points suivants si vous souhaitez que le topic se développe en une référence.
    - Séparez style de placement d'accolades, style d'indentation (et de placement des éléments de code autres que les accolades), style de nommage.
    - Donnez des arguments de préférence pas déjà cités ou développez en.
    - Citez des personnes, ouvrages, organisations, programmes célèbres qui l'utilisent.

    Enfin, c'est plus pour le loisir de voir comment les zéros codent. (Ne floodez pas trop --- si c'est pour dire que vous n'avez pas de vrai style ou que vous vous contentez de recopier celui du cours de m@t, c'est pas très intéressant ;)

    ps: Si ça ne plait pas, c'est pas grave, le topic coulera. :p
    • Partager sur Facebook
    • Partager sur Twitter
      5 décembre 2005 à 20:19:11

      je code en k&r bien sur :)
      Mais il fut un temps ou j'ai codé en GNU, car le style est assez joli, mais surtout ça respecte mes valeurs fondamentales, comme par exemple ne pas mélanger test et affectation.

      Le 1TBS est très pratique pour avoir un code compacte et lisible à la fois, et il permet en même temps de placer des commentaires sans défigurer le code.
      En bref, je préfère le k&r et le gnu, le pico est affreusement pas pratique (selon moi hein), le whitesmith et le bsd ne sont pas très beau ni très pratique.
      • Partager sur Facebook
      • Partager sur Twitter
        5 décembre 2005 à 20:31:44

        Alors tout d'abord mon style de variable.
        La première donne le type de ma variable et si elle contient plusieurs mots, j'utilise des majuscules. Exemple :
        • un int : int iMaVariable ;
        • un float : float fMaVariable;
        • une chaine de caractère : char szMaVariable[];
        • un pointeur sur un double : double *pdMaVariable ;


        Pour les constantes et les #define c'est tout en majuscules et si ça contient plusieurs mots c'est séparé par un underscore :
        • un int constant : const int MA_VARIABLE;
        • un define : #define MAX_COLOR 3

        Oui, je mets plus la petite lettre définissant le type devant, ne me demandez pas pourquoi, c'est une habitude.

        Pour les indentations, c'est simple, avec une accolade ouverte, c'est retour à la ligne et une tabulation de plus par rapport à avant pour décaler le code.

        Tout, ce qui est opérateur d'affectation , d'opération ou de condition se prennent un espace avant et après :

        iMaVariable = 3 + 5;


        Je laisse toujours une ligne vide avant le début d'une boucle, et une ligne vide après la fin :


        iMaVariable = 8;

        while(blablabla)
        {
           //blablabla
           
           if(blablabla == 3)
              //pouet
        }

        iMaVariable = 5;


        C'est à peu près tout :)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          5 décembre 2005 à 20:45:15

          Pour ma part je prefere avoir des noms de variable et de fonction comprensible meme s' ils sont long , le tous separe avec des underscore.Sino j essai de faire des fonctions que je qualifie de traitement ou il a des donnes de partout et des fonction d'affichage ou là on affiche tous les resulats.
          En peu comme les templates en PHP.
          Il na faut pas oublier l indentationt ,le saut de ligne et les commentaires qui me parraisent obligatoire.
          • Partager sur Facebook
          • Partager sur Twitter
            5 décembre 2005 à 20:47:16

            Pas mal la technique du i, f et tout pour rappeler le type de la variable, je vais essayer ça peut être pratique ;)

            Pour ma part, même si j'utilise plus souvent le C++, c'est à peu près pareil ;)

            Mes variables sont la plupart du temps en minuscules, et parfois séparées avec des tirets de soulignement, et les constantes sont en majuscules aussi.

            L'indentation est la même, je laisse systématiquement une ligne après l'accolade ouvrante de ma fonction et une avant l'accolade fermante !

            Même convension pour les affectation, toujours des espaces partout ça rend beaucoup plus lisible !

            Ensuite, comme j'utilises les classes en C++, toutes mes variables de classe, qui ne peuvent être utilisées que dans la classe (privées ou protegées) sont précédées d'un tiret de soulignement.
            _couleur /* Variable _couleur qui est utilisées uniquement dans une classe */


            Moi j'ai besoin de conseils niveau commentaires car, et on me l'a déjà dit (toi rz0 même ^^ ), je commente comme un porc :D Tous les conseils sont les bienvenus ! Merci ;)


            Ciao !
            • Partager sur Facebook
            • Partager sur Twitter
              5 décembre 2005 à 20:48:17

              Citation : drexil

              je code en k&r bien sur :)
              Mais il fut un temps ou j'ai codé en GNU, car le style est assez joli, mais surtout ça respecte mes valeurs fondamentales, comme par exemple ne pas mélanger test et affectation.

              Le 1TBS est très pratique pour avoir un code compacte et lisible à la fois, et il permet en même temps de placer des commentaires sans défigurer le code.
              En bref, je préfère le k&r et le gnu, le pico est affreusement pas pratique (selon moi hein), le whitesmith et le bsd ne sont pas très beau ni très pratique.



              C'est quoi tout ces noms bizarre?
              • Partager sur Facebook
              • Partager sur Twitter
                5 décembre 2005 à 20:58:20

                Citation : rz0

                ..."RMSRz0 il a fait trop de LISP, ça nuit à la santé mentale de son style C".
                ...



                :-°

                • Partager sur Facebook
                • Partager sur Twitter
                  5 décembre 2005 à 21:00:23

                  orthographe moisi. Wikipedia & google sont tes amis.
                  le k&r c'est le style utilisé au départ par Ritchie et Kernighan dans leur livre The C Programming Language (ou k&r...), il est aussi appelé 1TBS (pour one True Bracing Style)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 décembre 2005 à 21:07:17

                    Désolé pour mon écriture j'ai vraiment pas fait attention hors d'habitude ce n'est pas le cas. Tu remarqueras quand même que je n'ai pas écris en sms...

                    Merci de ta réponse.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 décembre 2005 à 21:25:00

                      Je rajouterai un commentaire sur mon propre style quand j'aurai le temps ; pour l'heure je me contente de dire que les noms commençant par un _ sont réservés en C et C++ et les noms contenant un double _, c-à-d __ sont interdits en C++. (Je ne connais pas plus détails de cette règle, ne me demandez pas)

                      Sinon, pour tes commentaires, il est souvent dit d'appliquer les principes suivants plus ou moins :
                      - Commenter ses types quand cela n'est pas évident (ex. structure)
                      - Commenter ses variables (souvent c'est évident et on a pas besoin de plus)
                      - Commenter ses fonctions
                      - Laisser le code propre sans commentaires pour la clarté (sauf pour les choses remarquables comme par ex que vous avez mis un gros workaround)
                      - Si vous avez besoin de commenter individuellement vos blocs à l'intérieur d'une fonction, il serait peut-être bon d'en faire plusieurs fonctions...
                      - Ne pas faire des commentaires en fin de ligne car c'est pas bien lisible (à la rigueur pour les petites notes pour les variables ou les membres d'une structure)
                      - Si votre code demande trop de commentaires, faire un bloc commenté séparé de documentation, une vraie doc ; cela se fait bien en en-tête de module
                      - Si vous avez besoin de plusieurs de ces blocs, il faudrait peut-être songer à faire plusieurs modules...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 décembre 2005 à 21:25:26

                        http://fr.wikipedia.org/wiki/Style_d%27indentation

                        Un lien qui parle des différents styles d'indentation cités dans les post précédent.
                        (Merci Wikipédia ! ! ! non c'est pas vrai je fais pas de pub => [] :p ).

                        Sinon moi je débute dans le C/C++, pour le moment d'ailleurs je ne fais que du C. Mais cela ne m’empêche pas d’avoir adopté un certain style, proche du K&R.
                        if( x == y) {
                            fonctionA();
                            } else if (x > y) {
                                   fonctionB();
                            } else if (x<y) {
                                   fonctionC();
                            }


                        Mes variables sont dans le style java si j'ai bien compris :

                        un int : int maVariable ; dans le même genre que m@téo

                        De même constante et define en majuscule.

                        Voila :), étant débutant j'espère avoir été clair, si j'ai fais une erreur n'hésitez pas à me le dire ! Tout le monde est perfectible.

                        deLux
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          5 décembre 2005 à 21:53:14

                          Alors pour ma part (en C) :
                          • Je fais des indentations avec des tabulations de 4 dans un style BSD/Allman
                          • Je nomme mes variables et fonctions tout en minuscule avec des mots séparés par des _ (il y avait un temps où je codais les noms comme rotoclap mais après j'ai trouvé ça moins joli surtout en utilisant une API tout en minuscule)
                          • Pour les commentaires, je mets des /* sur une seule ligne */ où en blocs sur plusieurs, je commente un peu en haut de chaque fonction ou structure et au tout début du programme
                          • De toute façon j'essaie de faire un code très propre, voir ma signature qui résume bien ma vie :D

                          Enfin voilà un petit bout de code de moi que je trouve assez propre et qui me représente le mieux (coupé, essayez pas de le compiler) :

                          /*
                           * fibonacci.c
                           * calcule la suite de fibonacci
                           *
                           * Copyright (C) 2005  mon nom
                           * <mon_adresse@9online.fr>
                           */


                          #include <stdio.h>
                          #include <stdlib.h>
                          #include <string.h>

                          void fibonacci(int limite);
                          int demander_nombre(void);
                          void traiter_arguments(int argc, char* argv[]);

                          /*
                           * structure qui contient les arguments en options
                           */

                          struct args
                          {
                                  int limite;
                          } args;

                          /*
                           * calcul de la suite jusqu'a limite
                           */

                          void fibonacci(int limite)
                          {
                                  /* les nombres utiles au calcul de la suite */
                                  unsigned long a = 0;
                                  unsigned long b = 1;
                                  int nombre = 0;

                                  if(limite > 45)
                                  {
                                          limite = 45;
                                  }

                                  int i = 0;
                                  while(i <= limite)
                                  {
                                          nombre = a + b;
                                         
                                          b = a;
                                          a = nombre;

                                          printf("%d : %d\n", i, nombre);
                                          i++;
                                  }

                                  return;
                          }


                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 décembre 2005 à 7:41:24

                            Bon, le premier qui dit que je code comme un malpropre... :p

                            Tout d'abord, le nommage :
                            - Noms communs en minuscules, noms de constantes en majuscules.
                            - Utilisation du _ dans les constantes pour séparer les mots.
                            - Utilisation du _ dans les noms communs pour séparer les espaces de nommage. Vous avez bien compris, je ne sépare pas les mots du reste du nom lorsqu'il y en a 2 ou 3 (plus rare tout de même, trois). (Et j'utilise des abréviations aussi...)
                            - Préfixe sur les membres de structure. (Préfixe = abréviation du nom de la structure)

                            Par exemple :
                            struct stack_list;
                            struct stack_vec;
                            /* ... */
                            #define STACK_END (-1)
                            /* ... */
                            int stack_lpop(struct stack_list *s);
                            char *stack_ltostr(struct stack_list *restrict s, char *restrict buf, size_t n);
                            /* ... */
                            char *stack_vtostr(struct stack_list *restrict s, char *restrict buf, size_t n);

                            Enfin, ce genre de choses.
                            Voilà pour les noms, les indentations faudra attendre une autre fois. :p
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [war] Styles d'écriture C

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown