it-swarm.dev

Quelqu'un préfère-t-il les polices proportionnelles?

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

Recours à une police mono-espacée; la mise en forme 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 rencontré de programmeur qui préfère une police 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?

53
Jason Baker

Points communs contre les polices proportionnelles, commentés.

  • Vous ne pouvez pas aligner précisément le code verticalement avec des polices proportionnelles. Je veux dire, vous pourriez aligner précisément le code verticalement avec des polices proportionnelles, si tout le monde utilisait tabstops élastiques , mais hélas ...
  • Certaines polices proportionnelles rendent difficile la distinction de certains groupes de caractères. (par exemple, mrnm). Toutes les polices de programmation ne sont pas non plus parfaites, cependant: Courier New a des 'O' et '0' identiques et des '1' et 'l' identiques.
  • Certains IDE ont une mauvaise prise en charge des polices à largeur non fixe (comme susmentionné Visual Studio ou IDLE de Python). Dans certains contextes également, vous ne pouvez tout simplement pas en utiliser un. (par exemple, terminaux.)
  • Le choix d'une police proportionnelle pour le codage vous plongera 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'ai utilisé à la fois la police 'Ubuntu' et WenQuanYi Zen Hei Mono avec plaisir et je ne peux pas préférer l'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 demandez.

Cela dit, les polices sont comme de la nourriture. Certains les aiment bien arrondis, certains les aiment chauds et épicés - il n'y a pas une seule bonne police, ou nous l'utiliserions tous en ce moment. Ouais pour le choix!

47
badp

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

Cette fonctionnalité, souvent peu utile et peu connue lorsque l'on travaille avec du texte ordinaire, est essentielle pour les développeurs. Vous pouvez imaginer une multitude de scénarios: supprimer // des commentaires sur plusieurs lignes, l'ajout de parenthèses ou d'autres caractères, etc.

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 ce code hérité, je veux remplacer la notation dans le code par une méthode qui chargera ma note à partir des sites Web Stack Exchange eux-mêmes, en ayant toujours la possibilité de disposer de données à jour. J'ai commencé à refactoriser la propriété MyReputation, et maintenant je veux supprimer l'initialisation, dans la portée. Imaginez que je n'en ai pas quatre, mais les 84 sites Web SE.

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

The image shows that with Consolas, the rectangle selects reputation property.

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

The image shows that with Segoe UI, some reputation properties are selected only partially, while on other lines, the beginning of rating property is selected.

30
Arseni Mourzenko

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 au fil du temps j'ai abandonné parce que personne d'autre ne le fait et tout le monde suppose inconsciemment des polices mono espacées (comme le mentionne l'article de wikipedia, essayant de faire un tableau) mise en forme, art ascii dans les commentaires, etc.).

De plus, problèmes dans Visual Studio , que Microsoft ne veut pas résoudre, rend de toute façon impossible l'utilisation de polices proportionnelles bien conçues.

15
Dean Harding

Personnellement, je m'en fiche. Tant que vous gardez mes onglets alignés et la police lisible, je m'en fiche que j'utilise un espacement monospace, proportionnel ou autre. Ne commencez simplement pas à remplacer mes onglets par des espaces, et vous ne vous querellerez pas avec moi.

9
Aeo

J'utilise une police proportionnelle (Arial est la meilleure que j'ai trouvée jusqu'à présent, Verdana un finaliste proche) 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 la mise en forme tabulaire était souhaitable, mais ce n'est pas le cas, car cela crée un cauchemar de maintenance quelle que soit la police.

6
rwallace

Pour les langues qui ont des lignes courtes et beaucoup d'espace ouvert, je préfère les polices à espacement fixe. Je trouve que les polices à largeur variable peuvent améliorer la lisibilité là où vous avez de longues lignes 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 l'étaient.

Trim font

4
user287424

Je me souviens dans le livre de Bjarne Stroustrup Le langage de programmation C++ , des polices espacées de manière propotienne ont été utilisées pour le code. (Je ne trouve aucun exemple de page sur le Web)

Je ne me souviens pas des raisons exactes, mais je pense qu'il a mentionné cela et un autre changement (je pense que le langage C++ lui-même) en tant que nouvelles introductions dans ce livre.

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

4
Nivas

Les environnements Smalltalk comme Pharo utilisent des polices proportionnelles et en raison du style de langue, il semble très bien là-bas. 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
themue

J'ai passé un certain temps à trouver une bonne police lisible pour Eclipse il y a quelque temps, et sous XP j'ai utilisé Verdana pendant un certain temps. Consolas l'a réglé car il est vraiment superbe pour la programmation.

Ce sont mes conclusions:

  • La plupart des polices proportionnelles sont conçues pour la prose et seulement une petite ponctuation (qui à son tour est généralement un ou rarement deux caractères). La famille de langues C a beaucoup de ponctuation, ce qui, à mon avis, n'a tout simplement pas l'air bien 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ù se terminera le curseur lors de la navigation à l'aide des boutons fléchés. J'ai trouvé ça ennuyeux.
  • L'espacement vertical est également important. Ce n'est normalement pas quelque chose qui peut être remplacé facilement, et la plupart des polices proportionnelles ont moins d'espace entre les lignes que je ne le souhaiterais.
  • Très peu d'IDE sont testés avec des polices proportionnelles. Cela laisse de la place à des bogues subtils comme le fait de placer le curseur au mauvais endroit, de repeindre incorrectement des personnages, 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 enregistrement, de sorte que toutes les mises en page fantaisie sont 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 du formateur peut être superposées, mais nous utilisons la configuration standard du formateur qui n'a pas cela.

Je crois que l'application du formatage automatique pour tout le monde à chaque sauvegarde minimise les faux positifs dans le système de contrôle de source, lors de l'analyse médico-légale.

2
user1249

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

Comparez:

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

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

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 les attributs équivalents exactement les uns au-dessus des autres.

0
Adam Matan

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

0
Billjk