Journal Espaces ou tabulation ?

Posté par  .
Étiquettes : aucune
0
3
juin
2004
Yop,

jusqu'à maintenant j'utilisais les espace pour indenter le code, mais j'hésite à changer pour les tabulations, parce que comme ça celui qui regarde choisit la taille de l'indentation.

Z'en pensez quoi ?

(que c'est un gros troll ? ben, oui, certes, mais c'est aussi une question relativement sincère :))
  • # tab, splus simple

    Posté par  . Évalué à 3.

    avantage de la tabulation :
    - c'est plus rapide d'appuyer une fois sur tab que 4 fois sur le points
    - le gars choisit sa taille de tab dans son éditeur
    - ca réduit la taille de la source (mais pour la différence de taille)

    inconvénent :
    - dans les éditeurs vraiment naze, ca peut replacer la tab par un simple espace, un caractère bizarre (genre carré), ou autre chose
    - certains codes (genre html) sont biens plus lisibles avec des espaces qu'avec des tab de 6...

    a toi de voir ce que tu préfères, et si les gens avec qui tu travailles utilisent des éditeurs correct...
    • [^] # Re: tab, splus simple

      Posté par  . Évalué à 4.

      " avantage de la tabulation :
      - c'est plus rapide d'appuyer une fois sur tab que 4 fois sur le points"

      Oui enfin bon, là c'est l'éditeur qui va le faire, quand même :)
    • [^] # Re: tab, splus simple

      Posté par  . Évalué à 2.

      < tabulation >
      + inconvenient :
      - A. utilisait des tabulations puis B. a parfois complété avec n espaces. Malheureusement, B. n'utilisait pas un éditeur paramétré pour la même taille de tab.
      Moralité l'indentation est devenue "bordélique"

      Vive les espaces (car votre code le vaut bien ;o).
      • [^] # Re: tab, splus simple

        Posté par  . Évalué à 2.

        Complètement fallacieux ton raisonnement : si B avait utilisé des tabs, alors pas de pb. Et si c'est B qui avait commencé avec ses espaces et A qui avait continué avec des tabs, ça aurait été le bordel aussi ; en aurais-tu déduis "vive les tabs" ?

        Ce qui importe avant tout, c'est de faire les choses de façon homogène, et de convenir de règles quand on code à plusieurs.

        Maintenant, perso, je préfère les tabs parcequ'elles sont adaptables aux goûts de chacun. Je complète parfois avec des espaces, quand c'est nécéssaire pour conserver cette propriété de "si on les rallonge on pète pas tout", par exemple dans le cas d'expressions longues avec retour à la ligne :
        < tab >TOTO="${FOOBAR} \
        < tab >......gabuzomeu \
        < tab >......plopplopplop"

        L'erreur à ne pas faire serait:
        < tab >TOTO="${FOOBAR} \
        < tab >< tab >gabuzomeu \
        < tab >< tab >plopplopplop"
        Parceque si ça rend bien avec des tabs de 4 caractères, c'est pourri avec des tabs de 8.
        • [^] # Re: tab, splus simple

          Posté par  . Évalué à 2.

          Ce que j'essayais de dire (même maladroitement) c'est que, comme tu le soulignes :
          - utilisation de tab => tab + espace

          D'où ma conclusion...

          PS: maintenant tu peux juger cela fallacieux, ça n'empêchera pas ma non-convertion aux tabulations ,o)
          • [^] # Re: tab, splus simple

            Posté par  . Évalué à 2.

            Ok je comprends mieux. Mais je n'adhère toujours pas non plus à ta conclusion. Pourquoi se priver de la souplesse des tabs ? Si on s'en tient à :
            - tabs pour ce qui est variable
            - espaces en complément des parties fixes
            alors l'indentation reste clean quelle que soit les préférences de taille des tabs des gens, et on a le meilleurs des deux mondes.
      • [^] # Re: tab, splus simple

        Posté par  . Évalué à 1.

        M-x indent-region - dans emacs
        Bouton droit, source, format - dans eclipse
        Jalopy - pour ceux qui font du java
        ...

        Pour moi c'est chacun son truc, il existe de toute façon de nombreux moyens de reformater le code de qqun d'autre pour qu'il te convienne.
        • [^] # Re: tab, splus simple

          Posté par  (site Web personnel) . Évalué à 5.

          Toi, tu n'as jamais utilisé de gestionnaire de version.

          Parce que quand tu travaille à plusieurs, si chacun s'amuse à reformatter le code des autres, bonjour les conflits !!
          • [^] # Re: tab, splus simple

            Posté par  . Évalué à 1.

            Raté, j'utilise un gestionnaire de version quotidiennement.
            Il est vrai que mon approche peut poser problème à première vue.
            Une solution est d'utiliser un outil de remise en forme avant tout "check-in", ça évite d'imposer des règles de codage qui ne seront de toute façon pas respectées.
            -> un code formaté de manière identique dans tous les fichiers du projet
            -> pas de problèmes de diff entre 2 versions
            -> tu utilises des tabulations ou des espaces si tu veux, c'est harmonisé de toute façon ensuite
  • # Les tabs, c'est mal.

    Posté par  (site Web personnel) . Évalué à 4.

    Les tabulations, c'est mal parce que

    * Les gens qui utilisent des tabs ont la mauvaise habitude de configurer leur editeur avec une largeur de tab non standard. Résultat, le même code est affiché différemment sur différents éditeurs, et je ne parle pas du jour ou tu veux imprimer un code indenté avec une longueur de tab de 2.

    * Ca ne supporte pas l'ajout d'un prefix.

    Exemple:


    ma_fonction(x,
    y);


    (bien aligné)

    Va donner


    +ma_fonction(x,
    + y);


    (mal aligné) dans un diff, et


    > ma_fonction(x,
    > y);


    (encore pire) dans une réponse à un mail citant un bout de code.

    * Ca fait sauter le curseur de façon inattendue quand on se ballade dans la partie indentation.

    * ...
    • [^] # Re: Les tabs, c'est mal.

      Posté par  . Évalué à 2.

      Sur le coup du préfixe, c'est une mauvaise utilisation des tabs que tu cites. Les tabs sont à utiliser uniquement là où l'on peut effectivement les étirer, bref dans les cas standard de l'indentation (décalage de blocs de code pour figurer leur hiérarchie). Mais pour des ajustement au caractère près, c'est absurde. Cf mon exemple un peu plus haut dans le même ordre d'idée.
      • [^] # Re: Les tabs, c'est mal.

        Posté par  (site Web personnel) . Évalué à 2.

        Otes-moi d'un doute:

        * Tu indente à la main ?!?

        * Ou tu as configuré ton éditeur pour configurer tantôt avec des tabs et tantôt avec des espaces ?

        Si tu es dans le premier cas, tu devrait te renseigner sur les éditeurs qui font l'indentation tout seuls, tu gagnerais _vraiment_ du temps. Si c'est le second, ça me parait bien compliqué pour pas grand chose.
        • [^] # Re: Les tabs, c'est mal.

          Posté par  . Évalué à 4.

          Le très gros de mon indentation est automatique (les décalages de blocs en tabs, etc.), mais je fais effectivement des compléments en espace à la mains. Je t'entends déjà hurler... :)
          Franchement, ça prends vraiment moins d'une seconde, ça n'a rien de dramatique. D'une part, ça n'est nécéssaires que dans des cas assez rares (je ne passe pas à la ligne entre les arguments de fonction comme dans ton exemple, donc ça laisse juste les saut dans de longues expressions booléennes/arithmétiques, ou des trucs du genre). D'autre part, je n'ai à le faire que pour la première ligne suivant un saut, les autres reprennant le même formatage. Bref, j'ai toujours eu la flemme de coder le mode qui irait bien pour gagner seulement une petite seconde toutes les ~ 100 lignes.

          > bien compliqué pour pas grand chose

          Bof, "pas grand chose"... Avoir un code toujours bien aligné malgré son élasticité, c'est assez appréciable. Enfin, c'est effectivement pas grand chose, mais ça n'est pas mois que n'importe quel autre élément de l'indentation, qui n'est faite que d'un ensemble de détails. Tes diffs mal alignés ou les saut de curseur quand on scrolle, c'était des "pas grand chose" encore plus petits :)
  • # editeur...

    Posté par  (site Web personnel) . Évalué à 0.

    pour coder : rien ne vaut emacs ....

    c'est entre autre pour ça que je l'utilise, ne pas avoir à se soucier de l'indentation du code c'est vraiment le pied....

    ou réindenter un code source en quelques touches de clavier, c'est quand même le pied....

    EMACS ROXOR...

    M.
    • [^] # Re: editeur...

      Posté par  . Évalué à 2.

      Oui mais bon, il sauve quand même en tab ou en espace :)

      (sinon, y'a moyen de "forcer" une tabulation avec emacs ? tab indente mais c'est tout)
      • [^] # Re: editeur...

        Posté par  (site Web personnel) . Évalué à 2.

        C-q TAB
      • [^] # Re: editeur...

        Posté par  (site Web personnel) . Évalué à 2.

        à rajouter dans .emacs :

        (setq indent-tabs-mode t)

        Cela indique à emacs qu'il faut utiliser de vraies tabulations pour indenter. Il faut aussi penser à faire cooîncider la largeur des tabulation avec la largeur des d'indentation.
    • [^] # Re: editeur...

      Posté par  . Évalué à 2.

      Réindenter tout, ça va quand tu codes pour toi, mais tu ne peux pas le faire quand tu bosses à plusieurs ou que tu contribue à un projet, ça rend impossibles les patchs (et non, 'diff -b' n'est pas une solution viable).
  • # sous vim

    Posté par  (site Web personnel) . Évalué à 2.

    dans ton .vimrc
    set expandtab

    tu appuies sur tab, et ca te fais une tabulation en espaces.
    Pour effacer la tab, vu que c est plein d espaces, tu fais un petit dw ou db selon là ou tu es dans tes espaces...
    • [^] # Re: sous vim

      Posté par  (site Web personnel) . Évalué à 3.

      D'ailleurs petite astuce pour indenter tout une programme avec vim:
      taper en mode commande
      gg=G'' (attention c'est pas le double quote c'est 2 fois le simple ' , et ca sert juste a revenir ou on etait dans le texte)
  • # Mort aux TABs !!

    Posté par  . Évalué à -1.

    Je voulais poster un commentaire, mais le temps que je le fasse tous mes arguments sont ressortis plus haut :)
  • # Un tab, ça ne change pas de largeur.

    Posté par  (site Web personnel) . Évalué à 1.

    Une tabulation, ça cale le curseur à la prochaine position multiple de 8 caractères. Ce n'est pas négotiable.

    Perso, pour le html, xml, javascript j'indente de 2 espaces.
    Pour le java, 4 espaces.

    Les blocs de 8 espaces sont remplacés par une tabulation. (enfin c'est mon éditeur qui le fait tout seul)
    • [^] # Re: Un tab, ça ne change pas de largeur.

      Posté par  . Évalué à 2.

      Euh, tu mélanges les 2 ?
      Donc si quelqu'un ouvre ton truc avec un éditeur qui a les tabs à 2/4 espaces, il aura un truc tout pourri ?
      • [^] # Re: Un tab, ça ne change pas de largeur.

        Posté par  . Évalué à 2.

        «si quelqu'un ouvre ton truc avec un éditeur qui a les tabs à 2/4 espaces»

        Ben d'un autre côté, on va pas se mettre à se soucier des hérétiques, si ? Une tabulation, c'est huit espaces, non mais...

        (oui oui, je sais, mais j'ai pas dormi depuis longtemps)
    • [^] # Re: Un tab, ça ne change pas de largeur.

      Posté par  . Évalué à 2.

      Une tabulation, ça cale le curseur à la prochaine position multiple de 8 caractères. Ce n'est pas négotiable.

      Pourquoi (je demande vraiment, je connais pas leur histoire ou leur sémantique officielle) ? C'est pourtant très pratique. Mais si ils doivent effectivement avoir une taille fixe, alors ils n'ont plus grand intérêt, sinon d'économiser 7 octets.
      • [^] # Re: Un tab, ça ne change pas de largeur.

        Posté par  (site Web personnel) . Évalué à 4.

        Ben, la plupart des éditeurs te permettent de changer la largeur d'une tabulation, mais pas par exemple un simple "cat fichier.c". Résultat: Si tu modifie la largeur d'une tab dans ton editeur, tu peux être sur que tu vas avoir des problèmes un jour.

        La principale utilisation des tabs dans du source que je connais, c'est les étudiants qui indentent comme des porcs avec nedit, qui mettent une largeur de tab à 2, et qui impriment leur code pour le joindre au rapport de TP avec la largeur de tabs par défaut, et qui se retrouvent avec un truc illisible.
        • [^] # Re: Un tab, ça ne change pas de largeur.

          Posté par  . Évalué à 3.

          Au moins ils indentent les tiens :)

          Bon sinon, nan, ça n'est pas si rare dans le code non-estudiantain. Je pense la majorité du code python que j'ai eu l'ocacsion de toucher était indenté avec des tabs par exemple. Par contre j'en vois rarement dans les projets en c ou c++. Je sais pas quelles sont vraiment les influence sur ses stats du langage lui même et des habitudes des communautés.
          • [^] # Re: Un tab, ça ne change pas de largeur.

            Posté par  . Évalué à 2.

            Oh, et pour l'impression, dit leur quand même que le "cat | lpr" c'est pas la panacée. Avec a2ps, en plus de gagner la coloration syntaxique, ils pourront régler la taille des tabs ("-T size" je crois).
            • [^] # Re: Un tab, ça ne change pas de largeur.

              Posté par  (site Web personnel) . Évalué à 3.

              Ils connaissent a2ps.

              Mais quand ils en sont encore à "a2ps *" qui imprime aussi les binaires, leur demander de rajouter une option ... ;-)

              Sinon, pour l'indentation du python, on est d'accord que c'est à considérer comme un cas particulier !

              (si tu vas par là, montres-moi l'intérêt d'indenter avec des tabs pour du code en lisp ...)
              • [^] # Re: Un tab, ça ne change pas de largeur.

                Posté par  . Évalué à 2.

                Je ne vois pas trop ce qu'il a de particulier niveau indentation dans python par rapport à pas mal d'autres langages. Enfin, à part que l'indentation est obligatoire bien sûr. Mais rien ne dit qu'elle doit se faire par des tabs et pas par des espaces. Seulement, l'indentation dénote très majoritairement des imbriquation de blocs, et c'est pour ça que les tabs s'y prêtent bien. Mais c'est aussi vrai pour la plupart des autres langages.

                si tu vas par là, montres-moi l'intérêt d'indenter avec des tabs pour du code en lisp

                Tu veux dire ça :
                (fonction (ton premier paramètre)
                ..........(ton deuxieme paramètre))

                Clairement, y'a rien à indenter avec des tabs là dedans, puisque rien n'est élastique. La totalité du code est indentée en fonction de la longueur du nom de la fonction dont il est paramètre. Bref, tout est alignement vertical sur le code précédent (d'où les espaces, parceque le texte à une taille fixe), et rien n'est décalage horizontal de bloc (donc pas de tabs). on pourrait par contre indenter avec des tabs si on passait à la ligne après les noms de fonction, mais c'est vite trop long dans la pratique.

                Enfin bref, on est pas d'accord, c'est pas bien grave...
                Bravo à Elly pour ce sujet de troll frais et léger :)

                Et pour conclure, notons qu'il est bien dommage qu'il n'y ait rien à indenter en Whitespace, parceque le choix du(des) caractère(s) à utiliser aurait fait un bon troll subsidiaire.
                http://compsoc.dur.ac.uk/whitespace/(...)
  • # dans mon cas

    Posté par  (site Web personnel) . Évalué à 1.

    Quand je fais un site web, je me force à indenter avec des espaces, et à le faire moi-même.
    La raison en est simple, au moins, je suis sûr que l'indentation sera la même partout et qq soit l'éditeur.

    C'est un peu pénible, mais au final, on s'y retrouve grandement.

    My cent.
  • # Indentation auto ?

    Posté par  (site Web personnel) . Évalué à 1.

    Le gros avantage que je voit aux espaces, c'est que tu est sûr que ton code ressortira partout pareil.
    Le gros avantage que je voit aux tabulations c'est que l'utilisateur peut choisir leur taille (chez moi c'est 4 caractères).

    Mais ce journal m'a aussi fait me reposer une question que je m'était posé y'a quelques temps : existe-t-il un programme "d'indentation". Je m'explique : je voudrais un programme auquel on passe un texte (bien indenté, mal indenté ou pas indenté du tout), et qui nous le ressorte bien indenté comme on veut, avec si possible des choix assez poussés (exemple : les signe + est précédé et suivi d'un espace, sauf si il se trouve avant une parenthèse,...).
    Si quelqu'un connaît, qu'il HURLE, je lui serait très reconnaissant (non, j'ai pas [trop] l'envie et le temps de me mettre au perl).
  • # l'espace c'est naze!

    Posté par  . Évalué à 1.

    je me suis toujours demande si toutes les fois ou j'ai gueule a cause de ceux qui mettaient des espaces c'etait pas parcequ'en vrai ils savaient pas coder....
    enfin je sais pas c'etait tellement illisible que c'est pas possible...
    enfin toujours est il que l'espace c'est fait pour separer 2 mots.
    alors moi je suis pour les tabulations qui eux sont vraiment faits pour ca a la base! (enfin je crois... enfin en tout cas je lui vois pas d'autre utilisation a la tabulation...)
    enfin voila... donc a bas l'espace pour indenter!

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.