Adakah yang lebih suka font proporsional? [Tutup]

51

Saya sedang membaca artikel wikipedia tentang gaya pemrograman dan memperhatikan sesuatu dalam argumen yang menentang kode yang selaras secara vertikal:

Ketergantungan pada font satu spasi; pemformatan tabular mengasumsikan bahwa editor menggunakan font dengan lebar tetap. Kebanyakan editor kode modern mendukung font proporsional, dan pemrogram mungkin lebih suka menggunakan font proporsional untuk keterbacaan .

Sejujurnya, saya tidak berpikir saya pernah bertemu seorang programmer yang lebih suka font proporsional. Saya juga tidak bisa memikirkan alasan bagus untuk menggunakannya. Mengapa seseorang lebih menyukai font proporsional?

Jason Baker
sumber
11
Saya suka font proporsional untuk membaca, tetapi saya benar-benar menggunakan font monospace untuk kode. Selalu, selalu, selalu.
Frank Shearar
12
Juga mengutip Wikipedia: [citation needed]:)
dr Hannibal Lecter
7
Bertahun-tahun yang lalu, seorang profesor yang saya miliki di kampus setengah bercanda berkata "... karena itu bukan pemrograman kecuali itu kurir baru."
Steven Evers
12
Alasan saya menggunakan font proporsional sangat sederhana. Ini bukan tahun 1980-an lagi. Kami telah pindah dari terminal karakter. Surat kabar, buku, dan situs web umumnya tidak menggunakan font monospace karena alasan keterbacaan. Saya pikir mereka ada benarnya.
Timwi
4
Verdana 11px bagus.
Czarek Tomczak

Jawaban:

47

Poin umum terhadap font proporsional, berkomentar.

  • Anda tidak dapat secara tepat menyelaraskan kode secara vertikal dengan font proporsional. Maksud saya, Anda dapat menyelaraskan kode secara vertikal dengan font proporsional, jika semua orang menggunakan tabstop elastis , tetapi sayangnya ...
  • Beberapa font proporsional menyulitkan untuk membedakan beberapa grup karakter. (misalnya, mrnm). Namun, tidak semua font pemrograman sempurna: Courier New memiliki identik 'O' dan '0' dan identik '1' dan 'l'.
  • Beberapa IDE memiliki dukungan miskin untuk font non-fixed-width (seperti tersebut Studio Visual atau IDLE Python). Dalam beberapa konteks, Anda tidak bisa menggunakannya. (mis. terminal.)
  • Memilih font proporsional untuk pengkodean akan membuat Anda dalam perang suci yang tak ada habisnya. Namun, di sini ada masalah antara keyboard dan kursi.

Poin yang mendukung font proporsional

Secara pribadi, saya telah menggunakan font 'Ubuntu' dan WenQuanYi Zen Hei Mono dengan senang hati dan merasa saya tidak dapat memilih yang satu dengan yang lain. :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10 dan WenQuanYi Zen Hei Mono 9, dibandingkan. Tidak ada pemenang yang jelas di sini, jika Anda bertanya kepada saya.

Yang mengatakan, font seperti makanan. Beberapa seperti mereka yang bulat, beberapa seperti mereka panas dan pedas - tidak ada font yang tepat, atau kita semua akan menggunakannya sekarang. Yay untuk pilihan!

badp
sumber
Saya tidak menyadari bahwa font Ubuntu telah dirilis. Saya pikir itu bekerja dengan baik di sana.
Alan Pearce
+1 untuk menunjukkan kepada saya WenQuanYi Zen Hei Mono, font itu luar biasa. Saya hampir pasti akan menggunakannya dalam tesis saya. Tergantung pada seberapa baik kelihatannya dicetak - pada layar itu terlihat luar biasa dan tidak mengambil banyak tempat horisontal, yang sangat penting dalam cetakan.
Konrad Rudolph
9
Sungguh, hanya ada satu titik besar melawan proporsional: Anda tidak dapat benar-benar menyelaraskan karena tidak ada yang peduli untuk tabstop elastis. Yang benar-benar aneh, mengingat manfaatnya baik untuk die-hosp monospace dan mereka yang sebenarnya lebih suka membaca font-variabel lebar yang terlihat bagus. Ayo, dunia! Tabstop elastis!
Roman Starkov
7
@romkyns: Mengadopsi gaya indentasi yang tidak bergantung pada antrian dengan garis lain. Sederhana.
Zan Lynx
4
@ ZanLynx saya lakukan, karena saya suka font proporsional lebih dari saya suka perataan vertikal di tempat-tempat selain awal baris.
Roman Starkov
29

Ada alasan yang membuatnya hampir mustahil untuk menggunakan font selain monospace untuk pengkodean, tetapi tidak disebutkan dalam jawaban lain: pilihan persegi panjang .

Fitur ini, seringkali tidak terlalu berguna dan tidak terlalu dikenal ketika bekerja dengan teks biasa, sangat penting bagi pengembang. Anda dapat membayangkan banyak skenario: menghapus //komentar pada beberapa baris, menambahkan tanda kurung atau karakter lain, dll. Ini bahkan lebih berharga dengan dukungan lanjutan dari pilihan persegi panjang, seperti dalam Visual Studio 2010, di mana Anda tidak hanya dapat memilih dan menghapus teks, tapi pilih dan ganti.

Mari kita ambil contoh:

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

Dalam kode lama ini, saya ingin mengganti peringkat dalam kode dengan metode yang akan memuat peringkat saya dari situs web Stack Exchange sendiri, karena selalu dapat memiliki data terbaru. Saya mulai memperbaiki MyReputationproperti, dan sekarang saya ingin menghapus inisialisasi, dalam ruang lingkup. Bayangkan saya belum punya empat, tapi semua 84 situs web SE.

Inilah yang terjadi ketika menggunakan Consolas , font monospace. Saya menekan Backspace, dan hanya itu, saya dapat menghabiskan waktu yang tersisa untuk melakukan sesuatu yang benar-benar bermanfaat.

Gambar menunjukkan bahwa dengan Consolas, persegi panjang memilih properti reputasi.

Dan di sini hal yang sama dengan Segoe UI . Aduh!

Gambar menunjukkan bahwa dengan Segoe UI, beberapa properti reputasi hanya dipilih sebagian, sedangkan pada baris lain, awal properti peringkat dipilih.

Arseni Mourzenko
sumber
9
Ini terjadi karena Anda menggunakan spasi yang cocok dengan font monspace. Jika Anda memiliki spasi yang tepat tanpa font proporsional, Anda tidak akan memiliki masalah ini.
Kos
6
@ Ko: jadi alih-alih menekan, katakan, tiga tab, Anda akan menekan lima belas kali tombol spasi, daripada melihat bahwa Anda mengetik terlalu banyak, dan menghapus spasi terakhir? Sepertinya agak rumit, bukan begitu?
Arseni Mourzenko
6
Eclipse sebenarnya mendukung penggunaan font yang berbeda untuk mode pilih persegi panjang, yang membuat ini kurang menjadi masalah.
Nicholas
8
@Kos RE: "spasi yang tepat tanpa font proporsional": Tetapi jika programmer yang berbeda menggunakan font yang berbeda pada file yang sama, itu tidak akan berbaris. Jika semua editor menggunakan font monospace, itu akan selalu berbaris (dengan asumsi kode tidak menyalahgunakan tab untuk penyelarasan).
Max Nanasy
5
Saya menggunakan font proporsional selama 2 tahun tanpa tabstop elastis. Saya tidak menggunakan pilihan segi empat karena ada hal lain yang sepenuhnya menggantikannya di sebagian besar IDE: pemilihan multi-caret. Dalam contoh ini saya akan memilih "MyReputation =" lalu tekan Pilih kejadian berikutnya menggunakan CTRL-Ddi SublimeText dan VSCode, ALT-Jdi editor IntelliJ / JetBrains. Selanjutnya, SHIFT-CTRL-RIGHT ARROWuntuk memperluas pilihan ke token berikutnya di sebelah kanan dan selesai. Keuntungan utama adalah tidak ada yang perlu menyelaraskan hal-hal untuk diedit. Kerugian, jika Anda memiliki sesuatu yang disejajarkan, itu tidak akan lagi.
Hay
15

Saya dulu menggunakan font proporsional, sebagian besar karena saya menemukan tanda baca sebenarnya lebih mudah untuk dibedakan, tetapi seiring waktu saya menyerah karena tidak ada orang lain yang melakukannya dan semua orang tanpa sadar menganggap font spasi mono (seperti yang disebutkan dalam artikel wikipedia, mencoba melakukan tabular format, ascii art dalam komentar dan sebagainya).

Plus, masalah dalam Visual Studio , yang tidak ingin diperbaiki oleh Microsoft, pada dasarnya membuatnya tidak mungkin untuk menggunakan font proporsional yang dirancang dengan baik.

Dean Harding
sumber
9
Cintai komentar Anda pertempuran mini dengan microsoft pada bug itu. Dan respon ceria mereka yang pada dasarnya adalah "Hai! Terima kasih! Senang bertemu Anda! Kami tidak akan melakukan apa-apa. OK, terima kasih senang mengobrol dengan Anda!" Bayangkan saja jika orang bertindak seperti itu dalam kehidupan nyata ...
danio
2
Anda mendapat simpati untuk simpati, karena, meskipun saya tidak menggunakan font yang proporsional-lebar untuk beberapa alasan yang Anda kutip, juru ketik saya terus-menerus mendambakan dukungan editor yang tepat, baik dalam desain maupun pemrograman.
Jon Purdy
Aneh, saya hanya berpikir bahwa tanda baca sebenarnya lebih sulit untuk dibedakan (terutama berhenti penuh) karena membutuhkan lebih sedikit ruang. Saya juga ingat bahwa Notepad ++ menggunakan Comic Sans MS pada komentar untuk waktu yang lama.
DisgruntledGoat
6
Jika Anda menemukan tanda baca yang sulit diidentifikasi dalam font monospace, ada font monospace lainnya - itu tidak berarti Anda harus menggunakan font proporsional.
Tidak ada yang
Tepat untuk tanda baca yang lebih baik, saya kadang-kadang menggunakan EnvyCode A atau B .
zanlok
9

Secara pribadi saya tidak peduli. Selama Anda menjaga tab saya tetap sejajar dan font dapat terbaca, saya tidak peduli apakah saya menggunakan monospace, proporsional, atau spasi lain di luar tembok. Hanya saja, jangan mulai mengganti tab saya dengan spasi, dan Anda tidak akan bertengkar dengan saya.

Aeo
sumber
3
Saya sangat setuju. Dan dengan tab (sebagai lawan ruang hard-kode) Anda dapat beralih antara font monospace dan proporsional dan menyesuaikan lebar tab sesuai. Yang belum saya lihat adalah editor di mana Anda dapat mengatur lebar tab dalam satuan EM.
August Karlstrom
6

Saya menggunakan font proporsional (Arial adalah yang terbaik yang saya temukan sejauh ini, Verdana adalah runner-up dekat) dan jujur ​​saya masih bingung bahwa orang menggunakan font dengan lebar tetap; mengapa Anda ingin mengorbankan keterbacaan seperti itu? Saya bisa mengerti jika pemformatan tabular diinginkan, tetapi tidak, karena itu menciptakan mimpi buruk pemeliharaan terlepas dari font.

rwallace
sumber
4
Saya terkejut Anda suka Arial dan Verdana. Saya menemukan mereka agak kasar dan tidak profesional. Sudahkah Anda mencoba Calibri?
Timwi
2
Saya menggunakan 8pt Verdana. Nama pengidentifikasi panjang lebih mudah dibaca. Saya dapat melihat 70 baris kode tanpa menggulir dan garis jauh lebih pendek, sehingga kode tersebut adalah kolom yang sempit, seperti di koran. Ini memungkinkan saya untuk membagi tampilan editor menjadi dua kolom vertikal: Saya melihat deklarasi di satu tampilan dan menulis kode di yang lain. Juga ketika debugging, layar penuh dengan jendela debugging, tampilan kode pas di ruang kecil. Menggunakan font proporsional adalah menghapus keinginan untuk menyelaraskan hal-hal secara vertikal dan menempatkan kotak ascii tanda bintang di sekitar komentar.
Calmarius
2
Saya melihat 147 baris kode dalam Visual Studio pada monitor 1920x1200 diputar 90 ° untuk mode potret, menggunakan dengan font Konsol Lucida.
zanlok
158 baris dengan font Monako dalam Vim ... Layar saya bahkan tidak HD
Mark K Cowan
4

Saya ingat dalam buku Bjarne Stroustrup, The C ++ Programming Language , font dengan spasi propotianitely digunakan untuk kode. (Saya tidak dapat menemukan halaman sampel di web)

Saya tidak ingat alasan pastinya, tetapi saya pikir dia menyebutkan ini dan satu sama lain berubah (saya pikir bahasa C ++ itu sendiri) sebagai pengantar baru dalam buku itu.

Secara pribadi, saya lebih suka ruang tetap. Consolas adalah favorit saya.

Nivas
sumber
1
Memeriksa halaman 5 Edisi Khusus saya: font proporsional umumnya dianggap lebih baik untuk teks, dengan menggunakannya memungkinkan lebih sedikit jeda baris yang tidak logis, dan kebanyakan orang terbiasa dengannya. Saya merasa mudah dibaca. Stroustrup mempresentasikan kode di sini, bukan mencoba membuatnya, dan itu mungkin membuat hal-hal berbeda.
David Thornley
4
@ David, ya, dia mempresentasikan kode. Tapi, itu disajikan untuk "membaca" dan pertanyaan tetap vs proporsional adalah untuk "membaca" kode, IMHO.
Nivas
4

Untuk bahasa yang memiliki garis pendek dan banyak ruang terbuka, saya lebih suka font monospace. Saya menemukan bahwa font lebar variabel dapat meningkatkan keterbacaan di mana Anda memiliki garis panjang dan sintaks yang padat.

Masalah dengan font yang paling proporsional adalah font tersebut tidak dirancang untuk pemrograman. Halaman ini menunjukkan beberapa font yang tadinya.

Potong font

pengguna287424
sumber
4
tautan mati ke Google Code :(
Florian Castellane
2

Lingkungan Smalltalk seperti Pharo menggunakan font proporsional dan karena gaya bahasa itu terlihat sangat bagus di sana. Tetapi dalam bahasa C-style seperti Go atau yang lain seperti Erlang atau Python saya lebih suka font monospace.

themue
sumber
2

Saya menghabiskan waktu mencari font Eclipse yang bagus dan mudah dibaca, dan di bawah XP saya menggunakan Verdana untuk beberapa waktu. Consolas menyatakan itu karena sangat hebat untuk pemrograman.

Ini adalah temuan saya:

  • Sebagian besar font proporsional dirancang untuk prosa dan hanya sedikit tanda baca (yang biasanya satu atau jarang dua karakter). Keluarga bahasa C memiliki banyak tanda baca, yang sama sekali tidak - menurut saya - terlihat bagus dan lebih sulit dibaca daripada yang diperlukan.
  • Karakter panjang variabel berarti panjang garis bervariasi. Ini membuatnya hampir mustahil untuk menebak di mana kursor akan berakhir ketika menavigasi menggunakan tombol panah. Saya menemukan ini menjengkelkan.
  • Penspasian jarak vertikal juga penting. Ini biasanya bukan sesuatu yang bisa diganti dengan mudah, dan sebagian besar font proporsional memiliki ruang lebih sedikit di antara baris daripada yang saya inginkan.
  • Sangat sedikit IDE yang diuji dengan font proporsional. Ini membuat ruang untuk bug halus seperti meletakkan kursor di lokasi yang salah, karakter pengecatan yang salah, dan sejenisnya.

Oleh karena itu saya menemukan bahwa itu tidak sepadan dengan masalah bagi saya.


Catatan tentang penyelarasan dan tata letak lainnya: Saya telah mengatur Eclipse untuk memformat setiap file secara otomatis pada setiap penyimpanan, sehingga semua tata letak yang mewah secara otomatis diatur ulang. Eclipse menggunakan tab alih-alih beberapa spasi dan ini dapat diposisikan dengan benar bahkan dengan font proporsional. Oleh karena itu tata letak formatter dapat lebih dari satu sama lain, tetapi kami menggunakan konfigurasi formatter standar yang tidak memilikinya.

Saya percaya bahwa penerapan pemformatan otomatis untuk semua orang di setiap penyimpanan meminimalkan positif palsu dalam sistem kontrol sumber, ketika melakukan analisis forensik.


sumber
0

Tidak pernah, karena font Monospaced memungkinkan saya untuk membandingkan atribut yang berbeda.

Membandingkan:

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

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

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

Untuk:

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

Font proporsional tidak dapat menempatkan atribut yang sama persis satu di atas yang lain.

Adam Matan
sumber
2
Saya tertarik untuk mengetahui lingkungan apa yang menjadi masalah bagi Anda. Anda dapat menggunakan tab dengan font proporsional dan lebar tetap untuk meluruskannya dalam kolom. Di mana masalah muncul adalah jika Anda menggunakan spasi alih-alih tab.
temptar
2
@ temptar: pertimbangkan "iii12345", "AAA12345" dan "nnn12354" satu di atas satu sama lain. Kesalahannya ("345") jauh lebih mudah dikenali. Anda tidak dapat menempatkan tab di tengah nilai.
Adam Matan
1
@temptar Tab tidak direkomendasikan oleh Python, dan lebarnya bervariasi di editor yang berbeda, yang dapat menyebabkan kode tidak selaras.
Adam Matan
2
@ Adam Matan. Itulah sebabnya Anda tidak harus melakukan pemformatan mewah.
August Karlstrom
0

Walaupun saya merasa bahwa font proporsional lebih cantik, pada beberapa dari mereka, terutama font sans-serif, tidak mungkin untuk melihat perbedaan antara "aku" dan "l". Tunggu, apa yang saya beri nama variabel itu lagi?

Billjk
sumber
2
Verdana memiliki serif pada I untuk diferensiasi yang lebih mudah.
Calmarius
1
0 dan O adalah masalah besar lainnya. Juga 'vs` dan. vs juga. Terkadang & dan $ adalah masalah (mengkhawatirkan dalam perl / php) Namun, Verdana bagus untuk sebagian besar di atas meskipun tidak hebat di 0s. Sayangnya, pada proyek yang ada dengan tab yang dicampur dengan ruang jahat, saya biasanya menyerah dan menggunakan Lucida Console. Jika Anda bertanya tentang penamaan variabel, Anda tidak menggunakan pelengkapan kode modern atau setidaknya menyalin / menempel seperti yang seharusnya.
zanlok
Salah satu font proporsional yang saya tahu yang memiliki 0Oo1lLiI yang tidak diragukan adalah TeX's "Latin Modern Mono Prop", sebuah kerabat yang berjarak secara proporsional dari "Latin Modern Mono" yang benar-benar dirancang untuk kode (untuk cetak bukan layar, meskipun, saya merasa renderingnya sedikit buram) . Tanda baca masih menjadi masalah, memiliki terlalu sedikit jarak untuk kepentingannya dalam kode IMHO, dan menciptakan ambigugas misalnya dua kutipan tunggal vs satu kutipan ganda: '' vs ",'' vs "
Beni Cherniavsky-Paskin