it-swarm.dev

Bevorzugt jemand proportionale Schriftarten?

Ich las den Wikipedia-Artikel über den Programmierstil und bemerkte etwas in einem Argument gegen vertikal ausgerichteten Code:

Vertrauen Sie auf Mono-Spaced-Schriftarten. Bei der tabellarischen Formatierung wird davon ausgegangen, dass der Editor eine Schriftart mit fester Breite verwendet. Die meisten modernen Code-Editoren unterstützen proportionale Schriftarten, und der Programmierer bevorzugt aus Gründen der Lesbarkeit möglicherweise eine proportionale Schriftart .

Um ehrlich zu sein, glaube ich nicht, dass ich jemals einen Programmierer getroffen habe, der eine proportionale Schriftart bevorzugt. Ich kann mir auch keine wirklich guten Gründe für ihre Verwendung vorstellen. Warum sollte jemand eine proportionale Schrift bevorzugen?

53
Jason Baker

Gemeinsame Punkte gegen proportionale Schriftarten, kommentiert.

  • Sie können Code nicht genau vertikal an proportionalen Schriftarten ausrichten. Ich meine, Sie könnten Code genau vertikal mit proportionalen Schriftarten ausrichten, wenn alle elastische Tabstops verwenden, aber leider ...
  • Einige proportionale Schriftarten erschweren die Unterscheidung einiger Zeichengruppen. (z. B. mrnm). Allerdings sind auch nicht alle Programmierschriften perfekt: Courier New hat identische 'O' und '0' und identische '1' und 'l'.
  • Einige IDEs unterstützen Schriftarten mit nicht fester Breite nur unzureichend (wie oben erwähnt Visual Studio oder Pythons IDLE). In einigen Kontexten können Sie auch keinen verwenden. (z. B. Terminals.)
  • Wenn Sie eine proportionale Schriftart für die Codierung wählen, geraten Sie in endlose heilige Kriege. Hier besteht jedoch das Problem zwischen der Tastatur und dem Stuhl.

Punkte zugunsten proportionaler Schriftarten

Persönlich habe ich sowohl die 'Ubuntu'-Schriftart als auch WenQuanYi Zen Hei Mono mit Vergnügen verwendet und bin nicht in der Lage, einander vorzuziehen. :) :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10 und WenQuanYi Zen Hei Mono 9, verglichen. Es gibt hier keinen klaren Gewinner, wenn Sie mich fragen.

Das heißt, Schriften sind wie Essen. Einige mögen sie gut gerundet, andere mögen sie scharf und würzig - es gibt keine richtige Schriftart, oder wir alle würden sie jetzt verwenden. Yay für die Wahl!

47
badp

Es gibt einen Grund, der es praktisch unmöglich macht, andere Schriftarten als Monospace für die Codierung zu verwenden, der jedoch in anderen Antworten nicht erwähnt wurde: rechteckige Auswahl.

Diese Funktion, die bei der Arbeit mit normalem Text oft nicht sehr nützlich und wenig bekannt ist, ist für Entwickler von wesentlicher Bedeutung. Sie können sich eine Vielzahl von Szenarien vorstellen: Entfernen von // Kommentare in mehreren Zeilen, Hinzufügen von Klammern oder anderen Zeichen usw. Dies ist noch wertvoller, wenn die rechteckige Auswahl erweitert wird, wie in Visual Studio 2010, wo Sie Text nicht nur auswählen und entfernen, sondern auch auswählen und ersetzen können.

Nehmen wir ein Beispiel:

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,
}

In diesem Legacy-Code möchte ich die In-Code-Bewertung durch eine Methode ersetzen, die meine Bewertung von den Stack Exchange-Websites selbst lädt und immer über aktuelle Daten verfügt. Ich habe begonnen, die Eigenschaft MyReputation umzugestalten, und jetzt möchte ich die Initialisierung im Gültigkeitsbereich entfernen. Stellen Sie sich vor, ich habe nicht vier, sondern alle 84 SE-Websites.

Folgendes passiert bei Verwendung von Consolas , einer Monospace-Schriftart. Ich drücke die Rücktaste und das ist alles, ich kann die verbleibende Zeit damit verbringen, etwas wirklich Nützliches zu tun.

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

Und hier das gleiche mit Segoe UI . Autsch!

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

Früher habe ich eine proportionale Schriftart verwendet, hauptsächlich, weil ich finde, dass Interpunktion tatsächlich leichter zu unterscheiden ist, aber im Laufe der Zeit habe ich aufgegeben, weil es niemand anderes tut und jeder unbewusst monofreie Schriftarten annimmt (wie im Wikipedia-Artikel erwähnt, und versucht, tabellarisch zu handeln Formatierung, ASCII-Kunst in Kommentaren usw.).

Außerdem macht Probleme in Visual Studio , die Microsoft nicht beheben möchte, es im Grunde unmöglich, gut gestaltete proportionale Schriftarten zu verwenden.

15
Dean Harding

Persönlich ist mir das egal. Solange Sie meine Registerkarten ausgerichtet und die Schrift lesbar halten, ist es mir egal, ob ich Monospace, Proportional oder einen anderen Abstand von der Wand verwende. Ersetzen Sie meine Tabulatoren einfach nicht durch Leerzeichen, und Sie haben keinen Streit mit mir.

9
Aeo

Ich verwende eine proportionale Schriftart (Arial ist die beste, die ich bisher gefunden habe, Verdana ist Zweiter) und ehrlich gesagt bin ich immer noch amüsiert, dass Leute Schriften mit fester Breite verwenden. warum sollten Sie so die Lesbarkeit opfern wollen? Ich könnte verstehen, ob eine tabellarische Formatierung wünschenswert wäre, aber dies ist nicht der Fall, da dies unabhängig von der Schriftart einen Alptraum für die Wartung darstellt.

6
rwallace

Für Sprachen mit kurzen Zeilen und viel Freiraum bevorzuge ich monospaced Schriftarten. Ich finde, dass Schriftarten mit variabler Breite die Lesbarkeit verbessern können, wenn Sie lange Zeilen und eine dichte Syntax haben.

Das Problem bei den meisten proportionalen Schriftarten ist, dass sie nicht für die Programmierung ausgelegt sind. Diese Seite zeigt einige Schriftarten, die waren.

Trim font

4
user287424

Ich erinnere mich, dass in Bjarne Stroustrups Buch Die C++ - Programmiersprache für den Code propotianisch beabstandete Schriftarten verwendet wurden. (Ich kann keine Beispielseiten im Web finden.)

Ich erinnere mich nicht an die genauen Gründe, aber ich denke, er hat diese und die andere Änderung (ich denke die C++ - Sprache selbst) als neue Einführung erwähnt Buch.

Persönlich bevorzuge ich feste Räume. Consolas ist mein Favorit.

4
Nivas

Smalltalk-Umgebungen wie Pharo verwenden proportionale Schriftarten und sehen aufgrund des Sprachstils dort sehr gut aus. Aber in C-ähnlichen Sprachen wie Go oder anderen wie Erlang oder Python Ich bevorzuge monospaced Schriftarten.

2
themue

Ich habe vor einiger Zeit einige Zeit damit verbracht, eine gute, lesbare Schriftart für Eclipse zu finden, und unter XP habe ich Verdana eine ganze Weile verwendet. Consolas hat das geklärt, weil es wirklich hervorragend für die Programmierung ist.

Dies sind meine Erkenntnisse:

  • Die meisten proportionalen Schriftarten sind für Prosa und nur geringe Interpunktion ausgelegt (die normalerweise aus einem oder selten zwei Zeichen besteht). Die C-Sprachfamilie hat viele Interpunktion, die meiner Meinung nach einfach nicht gut aussieht und schwerer zu lesen ist als nötig.
  • Zeichen mit variabler Länge bedeuten, dass die Länge der Zeilen variiert. Dies macht es nahezu unmöglich zu erraten, wo der Cursor beim Navigieren mit den Pfeiltasten endet. Ich fand das nervig.
  • Auch der vertikale Abstand spielt eine Rolle. Dies kann normalerweise nicht einfach überschrieben werden, und die meisten proportionalen Schriftarten haben weniger Platz zwischen den Zeilen als ich möchte.
  • Sehr wenige IDEs werden mit proportionalen Schriftarten getestet. Dies schafft Platz für subtile Fehler wie das Platzieren des Cursors an der falschen Stelle, das falsche Neulackieren von Zeichen und dergleichen.

Daher stellte ich fest, dass es die Mühe für mich nicht wert war.


Hinweis zur Ausrichtung und zu anderen Layouts: Ich habe Eclipse so eingestellt, dass jede Datei bei jedem Speichern automatisch formatiert wird, sodass alle ausgefallenen Layouts automatisch zurückgesetzt werden. Eclipse verwendet Tabulatoren anstelle mehrerer Leerzeichen. Diese können auch bei proportionalen Schriftarten korrekt positioniert werden. Daher liegen die Formatierungslayouts können übereinander, aber wir verwenden die Standardformatierungskonfiguration, die dies nicht hat.

Ich glaube, dass die Durchsetzung der automatischen Formatierung für alle Benutzer bei jeder Speicherung die Fehlalarme im Quellcodeverwaltungssystem bei forensischen Analysen minimiert.

2
user1249

Niemals, denn mit Monospaced-Schriftarten kann ich verschiedene Attribute vergleichen.

Vergleiche :

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

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

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

An :

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

Die proportionalen Schriftarten können äquivalente Attribute einfach nicht genau übereinander platzieren.

0
Adam Matan

Während ich der Meinung bin, dass proportionale Schriftarten hübscher sind, ist es bei einigen von ihnen, insbesondere bei serifenlosen Schriftarten, unmöglich, den Unterschied zwischen einem "I" und einem "l" zu erkennen. Warten Sie, wie habe ich diese Variable nochmal benannt?

0
Billjk