it-swarm-eu.dev

Preferuje někdo proporcionální písma?

Četl jsem wikipedia článek o programovacím styl a všiml jsem si něco v argumentu proti svisle zarovnanému kódu:

Spoléhání se na jednoprostorové písmo; tabulkové formátování předpokládá, že editor používá písmo s pevnou šířkou. Většina moderních editorů kódů podporuje proporcionální písma a programátor může pro čtení číst přednost proporcionální písmo .

Abych byl upřímný, nemyslím si, že jsem někdy potkal programátora, který upřednostňoval proporcionální písmo. Nemůžu ani vymyslet žádné opravdu dobré důvody pro jejich použití. Proč by někdo preferoval proporcionální písmo?

53
Jason Baker

Společné body proti proporcionálním písmům, komentované

  • Nelze přesně zarovnat kód svisle s proporcionálními fonty. Myslím, že mohl přesně zarovnat kód svisle s proporcionálními fonty, pokud všichni používali elastické tabstops , ale bohužel ...
  • Některá proporcionální písma ztěžují rozlišení některých skupin znaků. (např. mrnm). Ne všechna programovací písma jsou však také dokonalá: Courier New má identické 'O' a '0' a identické '1' a 'l'.
  • Některá IDE mají špatnou podporu pro písma s neomezenou šířkou (jako výše Visual Studio nebo Python's IDLE). V některých kontextech také jeden nemůžete použít. (např. terminály.)
  • Výběr proporcionálního písma pro kódování vás dostane do nekonečných svatých válek. Zde však existuje problém mezi klávesnicí a židlí.

Body ve prospěch proporcionálních písem

Osobně jsem používal obě písmo 'Ubuntu' a WenQuanYi Zen Hei Mono s potěšením a zjistil jsem, že nedokážu preferovat jednoho před druhým. :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10 a WenQuanYi Zen Hei Mono 9, ve srovnání. Není zde jasný vítěz, pokud se mě zeptáte

To znamená, že písma jsou jako jídlo. Někteří mají rádi dobře zaoblené, jiné jako horké a kořeněné - neexistuje žádné správné písmo, nebo by nás teď všichni používali. Yay na výběr!

47
badp

Existuje důvod, proč je prakticky nemožné použít pro kódování jiná písma než monospace, ale nebyly uvedeny v jiných odpovědích: obdélníkové výběry.

Tato funkce, často ne příliš užitečná a málo známá při práci s běžným textem, je pro vývojáře nezbytná. Můžete si představit řadu scénářů: odebrání // komentáře k několika řádkům, přidávání závorek nebo jiných znaků atd. To je ještě cennější s pokročilou podporou pravoúhlých výběrů, jako je tomu v Visual Studio 2010, kde můžete nejen vybrat a odstranit text, ale také jej vybrat a nahradit.

Vezměme si příklad:

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

V tomto starém kódu chci nahradit hodnocení v kódu metodou, která načte moje hodnocení ze samotných webových stránek Stack Exchange a bude moci mít vždy aktuální data. Začal jsem refaktorovat vlastnost MyReputation a nyní chci v rámci rozsahu odstranit inicializaci. Představte si, že nemám čtyři, ale všech 84 webů SE.

Zde je to, co se stane, když použijete Consolas , monospace font. Stisknu Backspace a to je vše, můžu strávit zbývající čas udělat něco skutečně užitečného.

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

A to samé s Segoe UI . No tak!

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

Používal jsem proporcionální písmo, hlavně proto, že zjistím, že interpunkce je ve skutečnosti snazší rozlišit, ale časem jsem se vzdal, protože to nikdo jiný nedělá a všichni nevědomky předpokládají monotisková písma (jak uvádí článek ve wikipedii, snaží se dělat tabular) formátování, umění ASCII v komentářích atd.).

Navíc problémy ve Visual Studio , které Microsoft nechce opravit, v podstatě znemožňují použití dobře navržených proporcionálních písem.

15
Dean Harding

Osobně mě to nezajímá. Dokud budete mít své karty zarovnány a čitelné písmo, nebude mi záležet na tom, zda používám monospace, proporcionální nebo jiné mezery mimo zeď. Jen nezačněte nahrazovat mé karty mezerami a nebudete se mnou hádat.

9
Aeo

Používám proporcionální písmo (Arial je to nejlepší, co jsem dosud našel, Verdana je blízká běžkyně) a upřímně řečeno, jsem stále zmatený tím, že lidé používají písma s pevnou šířkou; proč byste chtěli obětovat takovou čitelnost? Dokázal jsem pochopit, zda bylo žádoucí tabulkové formátování, ale není tomu tak, protože vytváří noční můru údržby bez ohledu na písmo.

6
rwallace

U jazyků, které mají krátké řádky a hodně volného prostoru, dávám přednost monospaced fontům. Zjistil jsem, že písma s proměnnou šířkou mohou zlepšit čitelnost, pokud máte dlouhé řádky a hustou syntaxi.

Problém s nejvíce proporcionálními fonty je v tom, že nebyly navrženy pro programování. Tato stránka zobrazuje některá písma, která byla.

Trim font

4
user287424

Pamatuji si, že v knize Bjarne Stroustrupu Programovací jazyk C++, pro kód byl použit propotianitně mezery. (Nemohu najít žádné vzorové stránky na webu)

Nepamatuji si přesné důvody, ale myslím, že zmínil tuto a jednu další změnu (myslím, že samotný jazyk C++) jako nové úvody v této knize.

Osobně dávám přednost těm pevným. Consolas je moje nejoblíbenější.

4
Nivas

Prostředí Smalltalk jako Pharo používají proporcionální písma a vzhledem k jazykovému stylu tam vypadá velmi dobře. Ale v jazycích ve stylu C, jako je Go nebo v jiných, jako je Erlang nebo Python, dávám přednost monospaced fontům.

2
themue

Strávil jsem nějaký čas hledáním dobrého, čitelného písma pro Eclipse, a zpět, a pod XP jsem už nějakou dobu používal Verdanu. Consolas to vyřešil, protože je to opravdu skvělé pro programování.

Toto jsou moje zjištění:

  • Většina proporcionálních písem je navržena pro prózu a pouze malou interpunkci (což je obvykle jeden nebo zřídka dva znaky). Rodina jazyků C má interpunkci lot, což jednoduše podle mého názoru nevypadá dobře a je obtížnější ji přečíst, než je nutné.
  • Znaky s proměnnou délkou znamenají, že se délka řádků liší. Díky tomu je téměř nemožné uhodnout, kde bude kurzor při navigaci pomocí tlačítek se šipkami končit. Našel jsem to nepříjemné.
  • Na svislých mezerách záleží také. To obvykle není něco, co lze snadno přepsat, a většina proporcionálních písem má mezi řádky menší prostor, než bych chtěla.
  • Velmi málo IDE je testováno proporcionálními fonty. To vytváří prostor pro jemné chyby, jako je umístění kurzoru na nesprávné místo, nesprávné překreslení znaků a podobně.

Proto jsem zjistil, že to pro mě nestojí.


Poznámka k zarovnání a dalším rozvržením: Nastavil jsem Eclipse tak, aby každý soubor při každém uložení automaticky formátoval, takže všechna luxusní rozvržení se automaticky resetují. Eclipse používá karty namísto více mezer a ty lze správně umístit i s proporcionálními fonty. Rozložení formátovače může tedy přes sebe, ale používáme standardní konfiguraci formátovače, která to nemá.

Věřím, že vynucení automatického formátování pro všechny při každém uložení minimalizuje falešné pozitivy v systému řízení zdroje při provádění forenzní analýzy.

2
user1249

Nikdy, nikdy, protože písma Monospaced mi umožňují porovnávat různé atributy.

Porovnat:

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

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

name3 = ["Jonathan", "Littell", 1967, "Próza"]

Komu:

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

Proporcionální písma prostě nemohou umisťovat ekvivalentní atributy přesně jeden nad druhý.

0
Adam Matan

I když mám pocit, že proporční písma jsou hezčí, v některých z nich, zejména bezpatkových písem, není možné vidět rozdíl mezi „já“ a „l“. Počkej, co jsem tu proměnnou pojmenoval znovu?

0
Billjk