Studi tentang lebar kode optimal?

131

Jika Anda mengaktifkan "View Right Margin" di IDE pilihan Anda, kemungkinan defaultnya adalah 80 karakter. Saya cenderung mengubahnya menjadi 120 tanpa alasan selain itu adalah standar di perusahaan saya dengan beberapa tahun yang lalu, dan tidak ada perusahaan lain yang mengatakan kepada saya untuk melakukannya secara berbeda.

Pertanyaan saya adalah, adakah studi yang benar-benar menunjukkan 80 karakter sebagai lebar maksimum optimal untuk keterbacaan kode, atau apakah nilai ini hanya "itulah yang selalu terjadi" dan tidak ada yang benar-benar tahu mengapa demikian? Dan, haruskah lebar satu baris kode menjadi bagian dari standar pengkodean Anda?

Fostah
sumber
1
Meskipun saya tidak tahu studi apa pun, Anda akan menemukan banyak pendapat sebagai jawaban untuk pertanyaan ini: * Apakah ada alasan yang sah untuk menerapkan lebar maksimum 80 karakter dalam file kode, hari ini dan usia?
Adam Bellaire
3
tidak ada studi yang saya ketahui tetapi Anda mungkin menemukan itu menarik untuk melihat berbagai proyek pengkodean standar. Misalnya Google adalah 80 karakter. ( code.google.com/p/google-styleguide ) di mana WebKit (ala Apple?) tidak memiliki batas AFAIK ( webkit.org/coding/coding/coding-style.html ). Mozilla tampaknya berusia 80 ( developer.mozilla.org/En/Mozilla_Coding_Style_Guide#Line_length )
gman
Itu sama dengan alasan kita mengeja "Birokrat" seperti yang kita lakukan. Karena dahulu kala seseorang menetapkan standar untuk alasan yang mungkin atau mungkin tidak masuk akal pada saat itu. Untuk mengeja itu adalah ketertarikan yang meragukan dengan bahasa Latin, untuk kode ukuran kartu pelubang kertas. Kemudian satu metode diberi label "benar". Dan birokrat kecil telah menegakkan standar sejak saat itu.
Tuntable

Jawaban:

116

Sebenarnya, hal 80-kolom lama mendahului DOS. Itu berasal dari pukulan kartu, yang merupakan perangkat 80-kolom.

Dan untuk menjawab pertanyaan OP, satu "studi" telah berlangsung selama sekitar 600 tahun sekarang - buku cetak. Ini telah berevolusi selama berabad-abad, dengan mempertimbangkan keterbacaan terutama, ke posisi kita sekarang di mana panjang garis rata-rata untuk teks adalah sekitar 60 karakter. Jadi untuk keterbacaan, pilih margin yang lebih sempit.


sumber
85
Saya benar-benar tidak percaya Anda dapat membandingkan membaca bahasa alami dengan membaca bahasa pemrograman dalam hal kegunaan.
Frug
25
@Frug - sebenarnya, Anda mungkin bisa. Alasan untuk lebar karakter 65 bukan karena garis yang lebih besar tidak dapat dibaca, tetapi itu adalah lengkungan yang terlalu ketat ketika mata bergerak ke baris berikutnya. Anda bisa menyiasatinya dengan menambah tinggi garis, tetapi itu membuatnya lebih sulit untuk menggunakan blok spasi untuk menyampaikan makna, jadi mungkin itu sesuatu yang harus dihindari dalam IDE.
Jimmy Breck-McKye
32
@ Jim - Bahasa alami saya tidak mengandung kata-kata dengan 30 karakter di dalamnya (bukan yang saya gunakan) dan itu mem-parsing sepenuhnya berbeda dari bahasa pemrograman. Anda sering dapat mengelompokkan satu baris kode sebagai terpisah dari yang lain, baik itu kondisional panjang atau kombinasi metode dan kelas panjang. Kombinasikan ini dengan lekukan dan perbandingan antara kedua bahasa menjadi tidak masuk akal. Saya tidak ragu ada orang yang secara ilmiah mempelajari keterbacaan dan panjang garis akan keberatan dengan Anda mencuci perbedaan.
Frug
10
@Frug - Saya tidak benar-benar melihat bagaimana keberatan Anda terlibat dengan salah satu klaim yang saya buat, tetapi saya dapat melihat bahwa lekukan merusak model yang saya usulkan. Tapi jangan panggil aku 'Jim'.
Jimmy Breck-McKye
17
Sebuah buku biasanya ditempatkan lebih dekat ke mata daripada monitor, yang berarti bahwa lebih sedikit karakter per baris yang diizinkan jika pembaca dapat membaca buku tanpa harus menjulurkan leher. Layar biasanya tidak ditempatkan pada jarak buku, yang berarti lebih banyak karakter per baris dapat digunakan sambil tetap dalam batas sudut mata maksimum. Juga, kode tidak dibaca sebanyak dibaca, membuat lebar ini kurang penting. Saya (YMMV) dapat dengan mudah mengikuti baris dengan 120 karakter kode pada layar laptop saya, tetapi ini terlalu lebar untuk 2 emacs buffer pada laptop 15 "saya, sayangnya.
Obscaenvs
104

Kasihanilah programmer yang harus memelihara perangkat lunak Anda nanti dan tetap pada batas 80 karakter.

Alasan memilih 80:

  • Dapat dibaca dengan font yang lebih besar pada laptop

  • Meninggalkan ruang untuk meletakkan dua versi berdampingan untuk perbandingan

  • Meninggalkan ruang untuk tampilan navigasi di IDE

  • Mencetak tanpa melanggar garis sembarang (juga berlaku untuk email, halaman web, ...)

  • Batasi kompleksitas dalam satu baris

  • Membatasi indentasi yang pada gilirannya membatasi kompleksitas metode / fungsi

Ya, itu harus menjadi bagian dari standar pengkodean.

starblue
sumber
10
Ini adalah alasan bagus untuk mempertahankan lebar garis hingga 80 karakter atau kurang. Saya sangat terkejut (kecewa) bahwa jawaban Anda, yang dipikirkan dengan jelas dan benar, tidak mendapatkan poin lebih banyak. Ke daftar ini, saya akan menambahkan: (1) pengguliran horizontal tidak menyenangkan. (2) Anda dapat sangat meningkatkan kepadatan kode yang sedang Anda kerjakan dengan melihat kode itu dalam beberapa kolom. Banyak real estat menjadi sia-sia ketika Anda memiliki beberapa jalur yang meluas ke kanan ketika sebagian besar jalur lainnya tidak.
Donnie Cameron
4
ok tapi apa yang terjadi ketika ada satu blok kode dengan sedikit lekukan? yang telah terjadi pada saya dan 80 karakter tidak menyenangkan sama sekali.
EKanadily
14
Limits the complexity in one lineSaya tidak yakin mengapa menyebarkan kompleksitas di banyak baris lebih baik. Itu hanya mendorong lebih banyak ke tumpukan mental Anda.
Jonathan
4
Ini adalah topik yang sangat lama. tetapi apakah Anda masih setuju sekarang bahwa banyak pengembang menggunakan monitor 27 inci :-). Maksud saya jika penglihatan merupakan masalah, layar yang lebih besar dapat membantu. 8 tahun yang lalu kami masih mengerjakan monitor 17 atau 20 inci dan beberapa bahkan pada resolusi 4: 3.
Mathijs Segers
1
@MathijsSegers terlepas dari ukuran atau resolusi monitor, masih lebih nyaman untuk menyimpan teks dalam 30 derajat tengah bidang penglihatan Anda. Ketika bekerja dengan beberapa jendela terbuka di monitor berdampingan, saya cenderung menoleh untuk melihat dari satu ke yang lain. Seseorang seharusnya tidak perlu memalingkan kepala atau memutar mata mereka sepenuhnya untuk membaca dari satu ujung garis ke ujung lainnya. Rotasi mata atau kepala yang begitu cepat mungkin akan menyebabkan vertigo jika dilakukan sepanjang hari.
maurice
41

Saya tidak memiliki studi, tetapi saya akan menceritakan pengalaman saya.

Saya menemukan bahwa pengguliran horizontal membosankan ketika berhadapan dengan teks. Saya melihat lingkungan di mana kode akan digunakan, dan menetapkan standar lebar berdasarkan konteks itu.

Misalnya, ketika saya bekerja di Emacs di XWindows, itu bekerja dengan baik untuk memiliki 2 jendela Emacs berdampingan setiap saat. Itu membatasi mereka hingga 80 karakter, jadi itu panjang garis maks saya.

Pada satu titik saya bekerja di Visual Studio pada layar 1920x1200. Saya akan memaksimalkannya, dengan semua jendela alat merapat di satu sisi. Ada cukup ruang tersisa untuk dua jendela editor berdampingan di sekitar 100 karakter.

Saya juga menemukan bahwa garis terpanjang berasal dari pemanggilan metode dengan daftar parameter panjang . Ini kadang-kadang bau kode : mungkin metode ini harus di refactored .

Jika Anda & rekan program Anda memiliki layar resolusi tinggi dan penglihatan yang tajam, tentu saja gunakan font kecil dan garis panjang. Sebaliknya, Anda mungkin perlu garis pendek.

Jay Bazuzi
sumber
1
ditambah satu untuk "mata yang tajam" karena sungguh itulah yang terjadi pada saya.
EKanadily
26

Saya biasanya menggunakan 120-150 kecuali jika perusahaan menjelaskan sebaliknya. Namun itu tergantung juga pada jenis kode:

  • Saya (hampir) tidak pernah menggunakan banyak pernyataan dalam satu baris
  • Saya hanya menggunakan garis panjang (> 12) hanya jika garis yang terlihat serupa dapat disejajarkan dan tidak rusak.
  • Saya selalu menggunakan cukup spasi / tanda kurung dll
  • Saya lebih suka nama variabel yang lebih panjang di atas nama yang lebih pendek

Sampai beberapa tahun yang lalu saya terbatas pada 100 tetapi sekarang layar lebar biasanya digunakan dan monitor resolusi tinggi 120 bahkan dapat dilihat di laptop (yang saya jarang gunakan).

Membandingkan layar dengan buku tidak terlalu bagus karena buku memiliki ruang lebih vertikal dan layar memiliki ruang lebih horizontal. Saya selalu mencoba untuk menjaga fungsi maks. satu layar terlihat panjang.

Michel Keijzers
sumber
6
Bagaimana 120-150 karakter per baris berfungsi dengan memiliki beberapa jendela yang terbuka berdampingan? Apakah Anda membiarkan banyak jendela editor kode terbuka berdampingan? - Pada monitor 30 '' saya, saya dapat memiliki 3 jendela berdampingan, jika saya membatasi jalur saya ke 97 karakter / baris.
KajMagnus
1
Saya kode pada layar besar dan saya juga suka jumlah yang lebih besar. Saya bertujuan untuk 110-130. Salah satu tujuan utama saya adalah keterbacaan dan memecah pernyataan menjadi 2-3 baris kadang-kadang kurang dapat dibaca menurut saya. Terkadang saya juga akan beralih ke 500-1000 untuk menyembunyikan sampah yang tidak ingin saya lihat seperti beberapa komentar, kode yang dinonaktifkan, dan beberapa nilai yang dikodekan dengan keras. Saya pikir itu tergantung pada programmer juga. Jika sebagian besar coders beroperasi pada 80 maka yang terbaik adalah untuk itu ketika bekerja dengan kode bersama.
Sunsetquest
10

Mungkin 80 karakter juga merupakan poin yang baik untuk menghindari rantai pengambil yang buruk ini:

object.getFoo().getBar().getFooBar().get ...

jika Anda membatasi hingga 80 karakter, mungkin seseorang akan melokalisasi variabel-variabel ini dan melakukan pemeriksaan nol dll, tetapi mungkin sebagian besar programmer akan membiarkan mereka membungkusnya di baris berikutnya. saya tidak tahu

Selain itu, 80 karakter hebat seperti yang disebutkan dalam starblue. Ini harus masuk ke standar pengkodean.

Christopher Klewes
sumber
5
FYI, metode chaining yang berlebihan seperti ini dikenal dengan nama kereta anti-pola .
Dennis
4

Mengabaikan batasan perangkat keras, dan perbedaan dalam cara kita membaca kode versus bahasa alami, saya melihat tiga alasan utama untuk membatasi garis menjadi sekitar 80 karakter.

  1. Bola mata manusia bundar, tidak terlalu sempit dan lebar, dan sebagian besar resolusinya ada di tengah . Saat membaca selama berjam-jam pada waktu itu jauh lebih nyaman untuk menyapu mata dalam busur pendek, menggunakan satu bilah gulir yang diperlukan. Saya tidak tahu tentang studi formal khusus untuk keterbacaan kode, tetapi dari pengamatan saya sendiri, dengan monitor 2 kaki jauhnya, dengan teks berukuran 10pt font monospace, 100 karakter membutuhkan sekitar 1/3 bidang horizontal saya visi, atau sekitar 60 derajat (di luar 30 derajat atau lebih di mana resolusi semua mata kita berada di ).
  2. Kebanyakan orang menggunakan monitor besar di tempat kerja sehingga mereka dapat melihat banyak hal tanpa mengklik bolak-balik, sehingga mereka tidak dapat melihat satu hal yang sangat besar.
  3. Baris pendek mengandung lebih sedikit kompleksitas, yang diharapkan memaksa pengembang untuk membuat kode mereka menjadi unit yang lebih mudah dicerna.
maurice
sumber
3

Saya ingat dengan jelas membaca di suatu tempat (saya pikir itu dalam Agile Documentation ) bahwa untuk keterbacaan optimal, lebar dokumen harus sekitar dua huruf, atau 60-70 karakter. Saya pikir lebar garis terminal lama sebagian berasal dari aturan tipografi yang lama.

bagian belakang
sumber
3

Opsi margin yang tepat dimaksudkan untuk menunjukkan kepada Anda lebar halaman jika Anda akan mencetak kode, dan telah diposting sebelumnya mengatakan itu diatur ke 80 karena itulah yang panjang garis secara historis sebelum GUI sepanjang jalan kembali untuk memencet kartu-kartu.

Saya telah melihat rekomendasi di beberapa blog baru-baru ini (tidak ingat blog apa) untuk meningkatkan ukuran font IDE Anda untuk meningkatkan kualitas kode, logika di baliknya adalah bahwa jika kode kurang cocok di layar Anda akan menulis baris yang lebih pendek dan fungsi pemanggil.

Menurut pendapat saya, baris pendek membuat membaca kode dan men-debug lebih mudah, jadi saya mencoba untuk menjaga garis pendek, jika Anda harus menetapkan batas untuk membuat diri Anda menulis kode yang lebih baik maka pilih yang bekerja untuk Anda - juga jika Anda lebih produktif dengan garis yang lebih panjang merasa bebas untuk meningkatkan ukuran halaman dan kode hanya pada layar lebar.

Nir
sumber
1

Seperti yang beberapa orang tunjukkan dalam jawaban lain alasan batas 80 karakter sebagian bersifat historis (kartu punch, layar kecil, printer, dll) dan sebagian bersifat biologis (untuk melacak garis apa yang ada di dalamnya, umumnya baik untuk dapat melihat keseluruhannya). baris tanpa perlu memutar kepala).

Karena itu, harap diingat bahwa kita masih manusia dan kita membangun alat untuk mengatasi keterbatasan kita sendiri. Saya mengusulkan Anda mengabaikan seluruh perdebatan tentang batasan karakter dan hanya menulis hal-hal yang masuk akal terlepas dari panjangnya, dan menggunakan IDE atau editor teks yang dapat membantu Anda melacak garis dengan benar. Menggunakan argumen yang sama untuk lekukan di tab vs ruang debat, serta seberapa lebar lekukan yang harus saya sarankan Anda menggunakan penanda lekukan (paling umum tab) dan hanya memiliki orang mengkonfigurasi IDE atau editor teks mereka sendiri untuk menampilkannya karena mereka merasa paling nyaman untuk mereka.

Menempel dengan jumlah karakter tetap per baris akan selalu membuat segalanya lebih buruk bagi semua orang kecuali audiens yang ditargetkan. Yang mengatakan, jika Anda tidak akan pernah membagikan kode, selamanya; maka sebenarnya tidak ada alasan untuk memulai diskusi ini. Jika Anda ingin membagikan kode, Anda mungkin harus membiarkan orang memutuskan sendiri apa yang mereka inginkan alih-alih memaksakan cita-cita Anda (atau orang lain) pada mereka.

Jonas Lihnell
sumber
0

Sepengetahuan saya, 80 karakter digunakan sebagai standar pengkodean untuk mempertahankan kompatibilitas dengan editor baris perintah (lebar terminal default biasanya 80 karakter). Dengan IDE modern dan resolusi layar besar 80 karakter mungkin tidak "optimal", tetapi bagi banyak pengembang menjaga keterbacaan di terminal sangat penting. Karena alasan itu, tidak mungkin lebar karakter 80 akan diganti sebagai standar de facto untuk lebar kode dalam waktu dekat. Dan untuk menjawab pertanyaan terakhir Anda, ya, lebar kode serta karakteristik lainnya yang akan mempengaruhi keterbacaan kode Anda harus dialamatkan dalam standar pengkodean Anda.


sumber