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

Affichage des résultats du sondage: Qu’est-ce que vous préférez utiliser pour indenter vos programmes ? Pourquoi ?

Votants
101. Vous ne pouvez pas participer à ce sondage.
  • Espaces

    32 31,68%
  • Tabulations

    60 59,41%
  • Cela dépend du cas (plus de détails dans les commentaires)

    7 6,93%
  • Aucune préférence particulière

    2 1,98%
Débats sur le développement - Le Best Of Discussion :

Espaces ou tabulations : qu’est-ce que les développeurs utilisent pour indenter leurs programmes ?


Sujet :

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

  1. #61
    Membre expert

    Profil pro
    activité : oui
    Inscrit en
    Janvier 2014
    Messages
    1 260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : activité : oui

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 260
    Points : 3 402
    Points
    3 402
    Par défaut homogénéité et personnalisation
    rappel : indenter = marquer un décalage par une mise en retrait, une marge... ceci provoque un alignement, mais ce n'est pas sont but, son but est de marquer un retrait significatif.

    Selon moi, les différents problèmes que la communauté typographique (programmeur, et surement d'autres aussi) à rencontré auparavant, était avant tout lié à la limitation des interprétations et traitements automatisé des IDE et autres éditeurs de textes... c'est pourquoi notepad++ à eu un tel succès >> il proposaient (à l'époque) des fonctionnalités absentent partout ailleurs.
    PS: je désigne par interprétations/traitement, toute opérations visant à modifier du contenu temporairement (ex: pour sont affichage), définitivement, ou toute opérations générant du contenu.

    En informatique, dès qu'il est question de caractères, il y a 5 choses que ça implique : leur signification, leur usage, leur interprétation, et leur codage ...et l'incompatibilité à certains procédés.
    Aujourd'hui les éditeurs de texte (et IDE) sont bourré de fonctionnalités, nombre de raisons (pas toutes, mais presque) d'utiliser des espaces à la place des tabulations n'ont plus lieu : le code source doit garder un maximum de sémantique. Si en 2016 (une époque où Unicode est le charset de base dans bien des milieu) un compilateur (ou interpréteur) n'est pas foutu de gérer les tabulations par un simple remplacement d'espaces... n'est-ce pas là la preuve d'une lacune de conception du-dit logiciel ?
    1) usage - Pour ma part, je suis aussi partisan du "tabuler pour indenter, espacer pour aligner", car la fonction première de la tabulation c'est bien un alignement (ça nous vient des machines à écrie).
    2) signification - En procédant ainsi, on facilite les traitements automatisés (intelligent > interprétation, sémantique...), j'entends par là que si une pratique est harmonisé à l'ensemble des pratiquant, fini les " ça marche sur tel logiciel, mais pars sur untel " (les formats propriétaires c'est une autre histoire).
    3) interprétation - Libre à tous d'afficher du texte comme bon lui semble. Seulement (de mon opinion) le contenu réel (tabulation au lieu d'espace) ne devrait pas être déterminé par des raisons d’esthétisme... c'est le boulot du logiciel d'affichage, pas du code. Si le code est mal indenté, peut importe les réglages... sa va foirer chez tout le monde !
    4) codage - Une tabulation fait effectivement moins d'occupation mémoire, mais sur du code source, c'est surtout les commentaires qui pèsent. ^^'
    Et lors de la compression, les "bon" algorithmes codent les caractères les plus fréquents dans les plus petit espaces... c'est-y pas magique tout ça ! =)
    5) incompatibilité - Que ce soit des problème d'en-tête (BOM) sur des fichiers web, ou de gestion de cas spécifiques sur des fichiers de paramétrage (qui n’acceptent pas les tabulations)... je ne comprend pas pourquoi depuis le nombre d'année que ces problèmes sont connu, qu'il ne soient toujours pas résolu. (à moins que je ne me trompe ?) Si qqn peux éclairer ma lanterne...

    tabulation ou espace, ont pour moi le même problème de NON-universalité >> une tabulation semble différente sur chaque logiciel, et les espaces le sont entre chaque POLICE de caractères !... et donc par extension aussi entre différent logiciel (qui n'utilise pas la même police)... et donc par extension entre différents OS ? =/

    Un CAS SPÉCIFIQUE ne trouve (selon moi) qu'une solution à l'heure actuelle >> qqn qui utilise de nombreuses petites indentations pour une distance de retrait, lorsqu'un autre en utilise seulement quelques grandes. Cela conduit " l'autre " de visualiser un énorme retrait, et à " l'un " de visualiser un retrait insuffisant / non-cohérent. Chose qui n'arrive pas avec la technique des espace
    SOLUTION >> tabuler pour indenter, espacer pour aligner (voilà, je l'ai placé) =)

    Ma conclusion : tabulation pour le code source (lorsque son usage est légitime), et ce que vous voulez pour son affichage. Les préférences sont aussi nombreuses qu'il y a de programmeurs, laissons nos logiciels s'occuper de ça. Contrairement à la tabulation, l'espace ne permet JAMAIS d'avoir un parfait alignement (qui dépend des lettres fines utilisé et des espaces entre)... à moins d'utilisé une police spécifique avec des glyphes à largeur constante.
    Je connais assez peu de logiciels capable de paramétrer les tabulation en mm ou en pixels... c'est dommage vu l'importance que l'on y accorde sur le confort.
    Si la même analyse était faite non pas sur GitHub, mais sur un logiciel qui permet (avec facilité ou précision) ces différentes optimisations ergonomiques, je suppose que certaines parties du graphe changeraient drastiquement.

    NB:
    Pyramidev > le problème que tu rencontre est que tu utilise à la fois des tabulations et des espaces pour un même rôle (indenter) et qu'il n'existe pas de paramétrage d'indentation mixte (4 tab + 12 esp) tu doit alors n'utiliser que des tabulation pour résoudre ton problème, ansi tu doit insérer une tabulation devant ton premier paramètre, juste après "("
    beaucoup de niveaux d'indentations ? >> est-il temps de fractionner le code en plusieurs fichiers ?
    Les tabulations sont plus portables (cohérente en taille) >> "plus" effectivement, mais encore trop souvent "pas"
    Les tabulations sont plus facile à supprimer que 4 espaces >> il est de plus en plus courant de pouvoir "convertir" les un en autres, et inversement, ou de gérer des bloc de tabulations ou par bloc d'espaces
    en revanche je ne connais pas de logiciel gérant l'indentation par paragraphe à l'aide d'espaces... alors que par tabulation oui (qui sont automatiquement remplacé par des espace si paramétré comme tel >> npp)

    Je suis ouvert aux critiques. (- ouvre son parapluie -)
    Pensez à utiliser les pouces d’appréciation, pour participer à la visibilité de l'apport d'un propos, ou l'intérêt que vous y prêtez... qu'il soit positif ou négatif.

  2. #62
    Membre expert

    Profil pro
    activité : oui
    Inscrit en
    Janvier 2014
    Messages
    1 260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : activité : oui

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 260
    Points : 3 402
    Points
    3 402
    Par défaut
    Citation Envoyé par foetus Voir le message
    Avec Visual (2010 - 2013), tu as la sélection rectangulaire (Shift + Alt + flèches) qui fonctionne correctement lors de l'ajout d'espaces: c'est facile
    Avec C++ Builder XE, tu as la sélection rectangulaire qui ne sert que pour la suppression et les tabulations
    aucun des deux ne gère lajout comme la supperession... que ce soit tabulation ou espace ? (merci du tuyau) =)

    Citation Envoyé par foetus Voir le message
    ...je code en affichant en permanence les espaces et les tabulations visibles.
    tu n'es pas le seul... si la coloration syntaxique est bien réglé, ça ne pose aucun problème et permet de gérer des erreurs de frappe, ou de simple correction à vu d'oeil plutôt qu'une demi journée de perdu pour un problème de comportement indésiré >> un copié / coller avec des espaces BLANC, qui sont eux-même copier/coller... ont a vite fait de limiter nombre de problème par l'affichage des caractère spéciaux. ^^'
    Pensez à utiliser les pouces d’appréciation, pour participer à la visibilité de l'apport d'un propos, ou l'intérêt que vous y prêtez... qu'il soit positif ou négatif.

  3. #63
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 460
    Points : 6 064
    Points
    6 064
    Par défaut
    Citation Envoyé par Pyramidev Voir le message
    Beaucoup d'éditeurs de texte ne savent pas gérer correctement les tabulations ! En fait, je n'en ai toujours pas trouvé un qui sait les gérer correctement ! Ou alors, je n'ai pas trouvé les bonnes options.
    Je prends un exemple illustratif : admettons que j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		uneFonction(parametre1, // avant la fonction  : 2 tabulations
    		            parametre2, // avant le paramètre : 2 tabulations puis 12 espaces
    Ensuite, je fais un retour à la ligne. Mon curseur se trouve alors juste en dessous du début de "parametre2". C'est bien.
    Sauf que, à gauche du curseur, au lieu d'avoir 2 tabulations puis 12 espaces, j'ai, par exemple, 5 tabulations et 0 espace (si j'affiche chaque tabulation avec une taille de 4 espaces) !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		uneFonction(parametre1, // avant la fonction  : 2 tabulations
    		            parametre2, // avant le paramètre : 2 tabulations puis 10 espaces
    					parametre3); // avant le paramètre : 5 tabulations puis 0 espace !!!!!
    Du coup, quand on affiche le code avec une taille différente pour les tabulations, "parametre2" est toujours affiché sous "parametre1", mais "parametre3" est décalé !
    Citation Envoyé par Logan Mauzaize Voir le message
    De mon point de vue, paramètre1 devrait être sur une nouvelle ligne et donc indenté. C'est le seul moyen d'aligner correctement.
    Citation Envoyé par Steinvikel Voir le message
    Pyramidev > le problème que tu rencontre est que tu utilise à la fois des tabulations et des espaces pour un même rôle (indenter) et qu'il n'existe pas de paramétrage d'indentation mixte (4 tab + 12 esp) tu doit alors n'utiliser que des tabulation pour résoudre ton problème, ansi tu doit insérer une tabulation devant ton premier paramètre, juste après "("
    Quand ma fonction a un nom très long et beaucoup de paramètres, je mets le premier paramètre sur une nouvelle ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		uneFonctionAvecUnNomLongMaisAlorsVraimentTresLong(
    			idUtilisateur,      config,           actionRanger,  chambre,       
    			tiroirAChaussettes, paireChaussettes, dureeMaximale, log
    		);
    C'est dans le but d'éviter de tout concentrer à droite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		uneFonctionAvecUnNomLongMaisAlorsVraimentTresLong(idUtilisateur,      config,
    		                                                  actionRanger,       chambre,
    		                                                  tiroirAChaussettes, paireChaussettes,
    		                                                  dureeMaximale,      log);
    Par contre, quand ma fonction a un nom court, je préfère éviter de passer à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		uneFonction(idUtilisateur,      config,           actionRanger,  chambre,       
    		            tiroirAChaussettes, paireChaussettes, dureeMaximale, log);
    Si je mettais le premier paramètre sur une nouvelle ligne, le code ferait plus de lignes sans que je ne le trouve plus lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		uneFonction(
    			idUtilisateur,      config,           actionRanger,  chambre,       
    			tiroirAChaussettes, paireChaussettes, dureeMaximale, log
    		);
    Or, plus un code fait de lignes, plus il y a besoin de faire du défilement vertical.

  4. #64
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Dans un épisode de Silicon Valley, le patron de la startup entame une relation avec une employée de Facebook. Les collègues du startuper expliquent à la jeune femme que leur boss est cool sauf pour un truc : il est intransigeant avec la mise en forme du code et impose les tabulations. La fille réplique qu'elle code avec des espaces mais que de toute façon c'est pareil à la compilation. Plus tard, alors que les deux tourtereaux sont en train de coder côte à côte sur un canapé chez la fille, le startuper finit par craquer après une discussion sur le sujet tab/space et plaque sa jolie nana !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #65
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Je reconnais cependant un inconvénient intrinsèque aux tabulations :
    Admettons qu'un code indenté avec des tabulations soit maintenu par deux développeurs, dont un qui affiche les tabulations avec une taille de 2 espaces et l'autre avec une taille de 6 espaces.
    Le premier aura moins tendance à revenir à la ligne que le deuxième. Du coup, quand le deuxième lira du code écrit par le premier, il aura plus tendance à faire du défilement horizontal avec son éditeur de texte.
    Ou alors, il faut que celui qui affiche les tabulations avec une taille de 6 espaces travaille avec un écran plus large.

    Il y a un autre inconvénient, que je vis beaucoup au quotidien, mais qui n'est pas intrinsèquement la faute des tabulations :
    Beaucoup d'éditeurs de texte ne savent pas gérer correctement les tabulations ! En fait, je n'en ai toujours pas trouvé un qui sait les gérer correctement ! Ou alors, je n'ai pas trouvé les bonnes options.
    Je prends un exemple illustratif : admettons que j'ai le code suivant :
    Code : Sélectionner tout

    1
    2


    uneFonction(parametre1, // avant la fonction : 2 tabulations
    parametre2, // avant le paramètre : 2 tabulations puis 12 espaces

    Ensuite, je fais un retour à la ligne. Mon curseur se trouve alors juste en dessous du début de "parametre2". C'est bien.
    Sauf que, à gauche du curseur, au lieu d'avoir 2 tabulations puis 12 espaces, j'ai, par exemple, 5 tabulations et 0 espace (si j'affiche chaque tabulation avec une taille de 4 espaces) !
    Code : Sélectionner tout

    1
    2
    3


    uneFonction(parametre1, // avant la fonction : 2 tabulations
    parametre2, // avant le paramètre : 2 tabulations puis 10 espaces
    parametre3); // avant le paramètre : 5 tabulations puis 0 espace !!!!!

    Du coup, quand on affiche le code avec une taille différente pour les tabulations, "parametre2" est toujours affiché sous "parametre1", mais "parametre3" est décalé !

    Dans VIM c'est possible, je viens d'essayer, à condition d'utiliser les options
    :set smartindent
    :set autoindent
    :set copyindent

Discussions similaires

  1. Est ce que on peut utiliser mysql5 en production
    Par amika dans le forum Installation
    Réponses: 7
    Dernier message: 12/09/2005, 16h21
  2. qu'est-ce que les design pattern ?
    Par airseb dans le forum Design Patterns
    Réponses: 1
    Dernier message: 23/11/2004, 09h02
  3. Est-ce que les fichiers .obj sont tous les mêmes?
    Par Bubonik software dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 30/12/2003, 22h04
  4. Réponses: 3
    Dernier message: 19/07/2002, 16h01

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