Est-ce que quelqu'un préfère les polices proportionnelles? [fermé]


51

Je lisais l' article de Wikipédia sur le style de programmation et j'ai remarqué quelque chose dans un argument contre le code aligné verticalement:

Dépendance à la police mono-espacée; Le formatage tabulaire suppose que l'éditeur utilise une police à largeur fixe. La plupart des éditeurs de code modernes prennent en charge les polices proportionnelles, et le programmeur peut préférer utiliser une police proportionnelle pour plus de lisibilité .

Pour être honnête, je ne pense pas avoir jamais rencontré un programmeur qui préférait une police de caractères proportionnelle. Je ne peux pas non plus penser à de très bonnes raisons de les utiliser. Pourquoi quelqu'un préférerait-il une police proportionnelle?


11
J'aime les polices proportionnelles pour la lecture, mais j'utilise strictement les polices à espacement fixe pour le code. Toujours, toujours, toujours.
Frank Shearar

12
Pour citer aussi Wikipedia: [citation needed]:)
dr Hannibal Lecter

7
Il y a de nombreuses années, un professeur à l'université m'a dit en plaisantant à moitié: "... parce que ce n'est pas de la programmation, sauf si c'est un nouveau service de messagerie."
Steven Evers

12
Ma raison d'utiliser une police proportionnelle est très simple. Ce ne sont plus les années 1980. Nous sommes passés des terminaux de personnage. Les journaux, les livres et les sites Web n'utilisent généralement pas de polices monospaces pour des raisons de lisibilité. Je pense qu'ils ont un point.
Timwi

4
Verdana 11px est génial.
Czarek Tomczak

Réponses:


47

Points communs contre les polices proportionnelles, commenté.

  • Vous ne pouvez pas aligner précisément le code verticalement avec les polices proportionnelles. Je veux dire, vous pouvez précisément aligner le code verticalement avec les polices proportionnelles, si tout le monde utilisait des taquets élastiques , mais hélas ...
  • Certaines polices proportionnelles rendent difficile la distinction entre certains groupes de caractères. (par exemple, mrnm). Cependant, toutes les polices de programmation ne sont pas parfaites: Courier New a les mêmes «0» et «0» et identiques «1» et «l».
  • Certains IDE prennent mal en charge les polices à largeur non fixe (comme Visual Studio ou IDLE de Python susmentionnées ). Dans certains contextes, vous ne pouvez pas en utiliser un seul. (par exemple, les terminaux.)
  • Choisir une police proportionnelle pour le codage vous mènera dans des guerres saintes sans fin. Ici, cependant, le problème existe entre le clavier et le fauteuil.

Points en faveur des polices proportionnelles

Personnellement, j'utilise avec plaisir la fonte 'Ubuntu' et le WenQuanYi Zen Hei Mono et je ne peux pas en préférer un à l'autre. :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10 et WenQuanYi Zen Hei Mono 9, comparés. Il n'y a pas de gagnant clair ici, si vous me le demandez.

Cela dit, les polices sont comme de la nourriture. Certains les aiment bien arrondis, d'autres les aiment piquants et épicés - il n'y a pas une seule police, ou nous l'utilisons tous maintenant. Yay pour le choix!


Je n'avais pas réalisé que la police Ubuntu avait été publiée. Je pense que ça marche bien là-bas.
Alan Pearce

+1 pour m'avoir montré WenQuanYi Zen Hei Mono, cette police est incroyable. Je vais presque certainement l'utiliser dans ma thèse. Cela dépend de la qualité de l'impression - à l'écran, il est superbe et ne prend pas beaucoup de place à l'horizontale, ce qui est très important pour l'impression.
Konrad Rudolph le

9
Vraiment, il n’ya qu’un seul gros point contre la proportionnelle: vous ne pouvez pas vraiment vous aligner car personne ne se soucie des taquets élastiques. Ce qui est tout à fait étrange, compte tenu des avantages qu’il procure à la fois aux utilisateurs difficiles et à ceux qui préfèrent réellement lire de belles polices à largeur variable. Allez, monde! Taquets élastiques!
Roman Starkov

7
@romkyns: Adoptez un style d'indentation qui ne repose pas sur l'alignement avec d'autres lignes. Facile.
Zan Lynx

4
C'est ce que j'ai fait avec @ZanLynx, car j'aime plus les polices proportionnelles que l'alignement vertical ailleurs qu'au début de la ligne.
Roman Starkov

29

Il y a une raison qui rend pratiquement impossible l'utilisation de polices autres que monospace pour le codage, mais cela n'a pas été mentionné dans les autres réponses: les sélections rectangulaires .

Cette fonctionnalité, souvent peu utile et peu connue lorsque vous travaillez avec du texte ordinaire, est essentielle pour les développeurs. Vous pouvez imaginer une multitude de scénarios: supprimer des //commentaires sur plusieurs lignes, ajouter des parenthèses ou d’autres caractères, etc. C’est encore plus utile avec la prise en charge avancée des sélections rectangulaires, comme dans Visual Studio 2010, où vous pouvez non seulement sélectionner et supprimer du texte, mais sélectionnez et remplacez-le.

Prenons un exemple:

private IEnumerable<SELove> StackExchangeRocks()
{
    var howILoveSEWebsites = new []
    {
        new SELove { SiteName = "Stack Overflow", MyReputation = 5269,  MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Programmers",    MyReputation = 16937, MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Super User",     MyReputation = 650,   MyRating = Rating.QuiteGood,   },
        new SELove { SiteName = "Server Fault",   MyReputation = 489,   MyRating = Rating.Good,        },
        // Initialize other websites here.
    };

    return howILoveSEWebsites.OrderByDescending(c => c.MyRating);
}

private class SELove
{
    public string SiteName { get; set; }
    public int MyReputation { get; set; }
    public Rating MyRating { get; set; }
}

private enum Rating
{
    Outstanding,
    Good,
    QuiteGood,
}

Dans cet ancien code, je souhaite remplacer l'évaluation en code par une méthode qui chargera mon évaluation à partir des sites Web de Stack Exchange eux-mêmes, en pouvant toujours disposer de données à jour. J'ai commencé à refactoriser la MyReputationpropriété, et maintenant je veux supprimer l'initialisation, dans la portée. Imaginez que je n’ai pas quatre sites, mais l’ensemble des 84 sites Web SE.

Voici ce qui se passe lorsque vous utilisez Consolas , une police monospace. J'appuie sur la touche Retour arrière et c'est tout, je peux passer le temps qui reste à faire quelque chose de vraiment utile.

L'image montre qu'avec Consolas, le rectangle sélectionne la propriété de réputation.

Et voici la même chose avec Segoe UI . Aie!

L'image montre qu'avec l'interface utilisateur de Segoe, certaines propriétés de réputation ne sont sélectionnées que partiellement, tandis que sur d'autres lignes, le début de la propriété d'évaluation est sélectionné.


9
Cela est dû au fait que vous avez utilisé un espacement correspondant à la police monspace. Si vous aviez un espacement correct avec la police proportionnelle, vous n'auriez pas ce problème.
Kos

6
@Kos: au lieu d'appuyer, par exemple, sur trois onglets, vous devez appuyer quinze fois sur la touche espace, puis vous remarquez que vous avez trop saisi et que vous supprimez le dernier espace? Cela semble un peu trop compliqué, vous ne pensez pas?
Arseni Mourzenko

6
En fait, Eclipse prend en charge l’utilisation d’une police différente pour le mode de sélection rectangulaire, ce qui rend le problème moins problématique.
Nicholas

8
@Kos RE: "Espacement correct avec la police proportionnelle": Mais si un programmeur différent utilise une police différente sur le même fichier, il ne s'alignera pas. Si tous les éditeurs utilisent des polices à espacement fixe, cela sera toujours aligné (en supposant que le code n'abuse pas des onglets pour l'alignement).
Max Nanasy

5
J'utilise une police proportionnelle depuis 2 ans sans aucune tabulation élastique. Je n'utilise pas de sélections rectangulaires car il y a autre chose qui le remplace complètement dans la plupart des IDE: la sélection multi-caret. Dans cet exemple, je sélectionnerais "MyReputation =", puis appuyez sur Sélectionner l'occurrence suivante à l'aide CTRL-Dde SublimeText et de VSCode, ALT-Jdans les éditeurs IntelliJ / JetBrains. Ensuite, SHIFT-CTRL-RIGHT ARROWpour élargir la sélection au prochain jeton à droite, c'est fait. Le principal avantage est que personne n’a besoin d’aligner des choses à éditer. Inconvénient, si vous avez quelque chose d’aligné, ce ne sera plus.
Hay

15

J'avais l'habitude d'utiliser une police proportionnelle, principalement parce que je trouve que la ponctuation est en fait plus facile à différencier, mais avec le temps, j'ai abandonné parce que personne ne le fait et que tout le monde suppose inconsciemment des polices à simple interligne mise en forme, art ascii dans les commentaires, etc.).

De plus, des problèmes liés à Visual Studio , que Microsoft ne veut pas résoudre, empêchent l'utilisation de polices proportionnelles bien conçues.


9
Aimez votre commentaire mini-bataille avec Microsoft sur ce bug. Et leur réponse joyeuse qui est fondamentalement "Salut! Merci! Enchanté de faire votre connaissance! Nous ne ferons rien. D'accord, merci beaucoup de discuter avec vous!" Imaginez si les gens agissaient de la sorte dans la vraie vie ...
danio

2
Vous obtenez un vote positif pour la sympathie car, bien que je n’utilise pas de police à largeur proportionnelle pour certaines des raisons que vous citez, mon typographe intérieur aspire constamment à un bon support de la part des rédacteurs, tant en conception qu’en programmation.
Jon Purdy

Bizarre, je pensais juste que la ponctuation est en réalité plus difficile à différencier (en particulier les points complets) car elle prend moins de place. Je me souviens également que Notepad ++ utilisait Comic Sans MS sur des commentaires depuis très longtemps.
DisgruntledGoat

6
Si vous trouvez qu'il est difficile d'identifier une ponctuation dans une police monospace, il existe d'autres polices monospaces. Cela ne signifie pas que vous devez utiliser une police proportionnelle.
Personne

Exactement pour une meilleure ponctuation, je l' utilise parfois EnvyCode A ou B .
Zanlok

9

Personnellement, je m'en fiche. Tant que vous maintenez mes onglets alignés et la police lisible, je me fiche de savoir si j'utilise un espacement monospace, proportionnel ou autre. Ne commencez pas à substituer des espaces à mes onglets et vous ne vous disputerez pas avec moi.


3
Je suis complètement d'accord. Et avec les tabulations (par opposition aux espaces codés en dur), vous pouvez basculer entre les polices monospaces et proportionnelles et ajuster la largeur des tabulations en conséquence. Ce que je n'ai pas encore vu, cependant, est un éditeur dans lequel vous pouvez définir la largeur de la tabulation en unités de EM.
Août Karlstrom

6

J'utilise une police proportionnelle (Arial est la meilleure que j'ai trouvée jusqu'à présent, Verdana se classant deuxième) et honnêtement, je suis toujours perplexe que les gens utilisent des polices à largeur fixe; pourquoi voudriez-vous sacrifier la lisibilité comme ça? Je pouvais comprendre si le formatage tabulaire était souhaitable, mais ce n’est pas le cas, car il crée un cauchemar de maintenance, quelle que soit la police utilisée.


4
Je suis surpris que vous aimiez Arial et Verdana. Je les trouve un peu brutaux et peu professionnels. Avez-vous essayé Calibri?
Timwi

2
J'utilise Verdana 8 pt. Les noms d'identificateurs longs sont plus faciles à lire. Je peux afficher 70 lignes de code sans défilement et les lignes sont beaucoup plus courtes. Le code est donc une colonne étroite, comme dans un journal. Cela me permet de scinder la vue de l'éditeur en deux colonnes verticales: je visualise la déclaration dans une vue et écris du code dans une autre. De plus, lors du débogage, l'écran est rempli de fenêtres de débogage, la vue du code s'adapte au petit espace. En utilisant des polices proportionnelles, vous supprimez le désir d’aligner verticalement les objets et de placer des boîtes de caractères astérisques autour des commentaires.
Calmarius

2
Je vois 147 lignes de code dans Visual Studio sur un moniteur 1920x1200 pivoté à 90 ° pour un mode portrait, avec la police Lucida Console.
Zanlok

158 lignes avec la police de Monaco dans Vim ... Mon écran n'est même pas en HD
Mark K Cowan

4

Je me souviens du livre Le langage de programmation C ++ de Bjarne Stroustrup , des polices proportionnellement espacées étaient utilisées pour le code. (Je suis incapable de trouver des exemples de pages sur le Web)

Je ne me souviens pas des raisons exactes, mais je pense qu'il en a parlé et que les autres changent (je pense que le langage C ++ lui-même) sont introduits dans ce livre.

Personnellement, je préfère les espaces fixes. Consolas est mon préféré.


1
Vérification de la page 5 de mon édition spéciale: les polices proportionnelles sont généralement considérées comme meilleures pour le texte. Leur utilisation permet moins de sauts de ligne illogiques et la plupart des gens s'y habituent. Je trouve cela facile à lire. Stroustrup présente le code ici, sans chercher à le créer, ce qui peut rendre les choses différentes.
David Thornley

4
@ David, oui, il présente le code. Mais, il est présenté pour "lire" et la question même de fixe vs proportionnel est pour "lire" le code, IMHO.
Nivas

4

Pour les langues comportant des lignes courtes et beaucoup d'espace libre, je préfère les polices à espacement fixe. Je trouve que les polices à largeur variable peuvent améliorer la lisibilité lorsque vous avez des lignes longues et une syntaxe dense.

Le problème avec la plupart des polices proportionnelles est qu'elles n'ont pas été conçues pour la programmation. Cette page montre quelques polices qui étaient.

Trim police


4
lien mort vers Google Code :(
Florian Castellane

2

Les environnements Smalltalk tels que Pharo utilisent des polices proportionnelles et, en raison du style de langue utilisé, ils y semblent très bons. Mais dans les langages de style C comme Go ou d’autres comme Erlang ou Python, je préfère les polices à espacement fixe.


2

Il ya quelque temps, j’ai trouvé une bonne police lisible pour Eclipse. Sous XP, j’utilisais Verdana depuis un certain temps. Consolas a réglé ce problème car il est vraiment superbe pour la programmation.

Ce sont mes conclusions:

  • La plupart des polices proportionnelles sont conçues pour la prose et peu de ponctuation (qui est généralement composée d'un ou rarement deux caractères). La famille des langues C a beaucoup de ponctuation, ce qui, à mon avis, n’a pas l’air agréable et est plus difficile à lire que nécessaire.
  • Les caractères de longueur variable signifient que la longueur des lignes varie. Cela rend presque impossible de deviner où le curseur se terminera lors de la navigation à l'aide des boutons fléchés. J'ai trouvé cela agaçant.
  • L'espacement vertical est également important. Ce n’est normalement pas quelque chose qui peut être facilement annulé, et la plupart des polices proportionnelles ont moins de place entre les lignes que je le souhaiterais.
  • Très peu d'IDE sont testés avec des polices proportionnelles. Cela laisse de la place à des bugs subtils tels que le fait de placer le curseur au mauvais endroit, de repeindre de manière incorrecte les caractères, etc.

Par conséquent, j'ai trouvé que cela ne valait pas la peine pour moi.


Remarque sur l'alignement et les autres mises en page: J'ai configuré Eclipse pour formater automatiquement chaque fichier à chaque sauvegarde, de sorte que toutes les mises en page sophistiquées soient automatiquement réinitialisées. Eclipse utilise des tabulations au lieu de plusieurs espaces et ceux-ci peuvent être positionnés correctement, même avec des polices proportionnelles. Par conséquent, les dispositions de formatage peuvent être superposées, mais nous utilisons la configuration de formatage standard qui ne l’a pas.

Je pense que l'application de la mise en forme automatique pour tout le monde à chaque sauvegarde minimise les faux positifs dans le système de contrôle de code source, lors de l'analyse judiciaire.


0

Jamais, jamais, car les polices Monospaced me permettent de comparer différents attributs.

Comparer:

name1 = ["William", "Shakespear", 1564, "Peotry"]

name2 = ["John", "Locke", 1632, "Philosophie"]

name3 = ["Jonathan", "Littell", 1967, "Prose"]

À:

name1=["William",  "Shakespear", 1564, "Peotry"     ]
name2=["John",     "Locke",      1632, "Philosophy" ]
name3=["Jonathan", "Littell",    1967, "Prose"      ]

Les polices proportionnelles ne peuvent tout simplement pas placer des attributs équivalents exactement les uns sur les autres.


2
Je suis intéressé de savoir quel environnement c'est un problème pour vous. Vous pouvez utiliser des tabulations avec des polices à largeur proportionnelle et à largeur fixe pour les aligner dans les colonnes. Le problème se pose si vous utilisez des espaces au lieu d’onglets.
Temptar

2
@temptar: considérez "iii12345", "AAA12345" et "nnn12354" l'un au dessus de l'autre. L'erreur ("345") est beaucoup plus facile à repérer. vous ne pouvez pas mettre d'onglets au milieu d'une valeur.
Adam Matan

1
@temptar Les onglets ne sont pas recommandés par Python et leur largeur varie selon les éditeurs, ce qui peut conduire à un code mal aligné.
Adam Matan

2
@Adam Matan C'est pourquoi vous ne devriez pas faire de formatage sophistiqué.
Août Karlstrom

0

Bien que j'estime que les polices proportionnelles sont plus jolies, dans certaines d'entre elles, notamment les polices sans empattement, il est impossible de voir la différence entre un "I" et un "l". Attendez, comment ai-je nommé cette variable à nouveau?


2
Verdana a des empattements sur I pour faciliter la différenciation.
Calmarius

1
0 et O est un autre problème majeur. Aussi 'vs `et. vs, ainsi. Parfois & & $ sont un problème (inquiétant en perl / php) Cependant, Verdana est bon pour la plupart de ce qui précède bien que pas excellent à 0s. Malheureusement, sur des projets existants avec des onglets mélangés avec des espaces diaboliques, j’abandonne généralement et utilise Lucida Console. Cependant, si vous vous interrogez sur le nommage des variables, vous n’utilisez pas l’achèvement de code moderne, ni au moins un copier / coller comme vous le devriez.
Zanlok

Une police proportionnelle que je connaisse qui ait un caractère sans ambiguïté est le "Latin Modern Mono Prop" de TeX, un parent à distance proportionnelle de "Latin Modern Mono" qui a été conçu pour le code (pour l'impression, pas pour l'écran, mais le rendu est un peu flou). . La ponctuation est toujours un problème, elle a trop peu d'espacement pour son importance dans le code IMHO et crée des ambiguïtés, par exemple deux guillemets simples contre un guillemet double: '' vs ",'' vs "
Beni Cherniavsky-Paskin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.