Mengapa PEP-8 menentukan panjang garis maksimum 79 karakter? [Tutup]

235

Mengapa dalam milenium ini haruskah Python PEP-8 menentukan panjang garis maksimum 79 karakter?

Hampir setiap editor kode di bawah matahari dapat menangani baris yang lebih panjang. Apa yang harus dilakukan dengan pembungkus harus menjadi pilihan konsumen konten, bukan tanggung jawab pembuat konten.

Adakah alasan sah untuk mematuhi 79 karakter di usia ini?

pcorcoran
sumber
73
Jawaban untuk pertanyaan Anda ada di PEP-8.
cdleary
29
Panjang garis yang lebih pendek meningkatkan produktivitas dengan meningkatkan KLOC Anda. : p
Alex
26
Batas 79 karakter benar-benar ketinggalan zaman. Setiap basis kode sederhana yang kompleks menunjukkan bagaimana hal itu membuat kode lebih canggung untuk dibaca. Mis: github.com/openstack/nova/blob/master/nova/network/manager.py
Jonathan
6
@ Jonathan: terlihat baik-baik saja bagi saya ...
nperson325681
9
Bukankah Anda orang menggunakan alat diff sisi-by-side?
endolith

Jawaban:

129

Sebagian besar nilai PEP-8 adalah untuk menghentikan orang-orang yang berdebat tentang aturan pemformatan yang tidak penting, dan terus menulis kode yang baik, yang diformat secara konsisten. Tentu, tidak ada yang benar-benar berpikir bahwa 79 optimal, tetapi tidak ada keuntungan yang jelas dalam mengubahnya menjadi 99 atau 119 atau apa pun panjang garis yang Anda sukai. Saya pikir pilihannya adalah ini: ikuti aturan dan temukan penyebab yang berharga untuk diperjuangkan, atau berikan beberapa data yang menunjukkan bagaimana keterbacaan dan produktivitas bervariasi dengan panjang garis. Yang terakhir akan sangat menarik, dan saya pikir akan memiliki peluang bagus untuk mengubah pikiran orang.


sumber
28
Sebagian besar studi membaca dilakukan dalam inci dan bukan karakter per baris. Aturan 66 karakter didasarkan pada studi yang dilakukan untuk membaca koran. Studi terbaru menunjukkan bahwa ketika membaca artikel online, kecepatan membaca meningkat hingga sekitar 120 karakter per baris (10 inci pada ukuran 12 font) tanpa kehilangan pemahaman.
Laju
7
Sebenarnya semua orang yang membaca topik itu berpikir bahwa 79 karakter itu optimal. Itu sebabnya ditambahkan ke PEP8! Jawaban ini sebenarnya salah. Yang ini benar
erikbwork
6
Saya pikir pertanyaannya adalah mengapa 79 lebih baik dari 80 atau 78
n611x007
157
there's no obvious gain in changing it to 99 or 119 or whatever your preferred line length is Ini sangat salah dalam banyak hal. Bungkus satu baris dengan 40 karakter dan katakan padaku seberapa mudah dibaca. Jelas lebih sedikit pembungkus = lebih banyak pembacaan selama Anda memiliki ruang layar, yang pada tahun 2015, Anda memilikinya. Pembungkus berdampak keterbacaan. Keterbacaan berdampak pada kemampuan pemeliharaan. Pemeliharaan berdampak pada kualitas. Dan kualitas terpengaruh jika Anda membungkus 80 karakter. Titik.
Jonathan
6
Berdebat tentang keterbacaan dengan apa pun yang bukan kode tidak berguna karena studi tersebut mengasumsikan teks berjalan. Kode terlihat sangat berbeda dengan panjang garis (karakter) yang berbeda setiap baris. Dan bahkan jika Anda menulis sampai akhir baris, lekukan mengubah jumlah karakter per baris.
Corvince
111

Menjaga kode Anda tetap terbaca oleh manusia, tidak hanya dapat dibaca dengan mesin. Banyak perangkat yang hanya dapat menampilkan 80 karakter dalam satu waktu. Juga membuatnya lebih mudah bagi orang-orang dengan layar yang lebih besar untuk melakukan banyak tugas dengan bisa mengatur beberapa jendela untuk berdampingan.

Keterbacaan juga merupakan salah satu alasan untuk indentasi saluran yang dipaksakan.

Justin Bozonier
sumber
58
Ya, diberikan. Tapi mengapa 79? Kenapa tidak 100 atau 120? Menjaga hal-hal yang mudah dibaca bekerja dua arah. Terlalu banyak membaca kode yang sulit juga sulit untuk dilakukan.
pcorcoran
17
Memang benar banyak perangkat hanya dapat menampilkan 80 karakter. Berapa banyak dari mereka yang tidak dapat melakukan soft-wrapping?
Jim
39
Juga, lebih disukai untuk tidak memiliki bungkus kode. Dari perspektif pengalaman pengguna, itu tidak dapat diterima untuk sebagian besar.
Justin Bozonier
8
Ada beberapa sistem operasi seperti MVS yang tidak dapat menangani garis lebih dari 72 karakter. PEP-8 tidak akan membantu di sini. Menetapkan batas acak 79 karakter tidak masuk akal karena bagaimana karakter per baris bagus tergantung pada editor, monitor, preferensi pribadi pengguna dan sebagainya.
codymanix
96
79 karakter juga membuat pemrogram menggunakan variabel lebih pendek dan nama fungsi lebih samar untuk membuat semuanya cocok. Ini buruk untuk dibaca.
Gert Steyn
46

Saya seorang programmer yang harus berurusan dengan banyak kode setiap hari. Sumber terbuka dan apa yang telah dikembangkan di rumah.

Sebagai seorang programmer, saya merasa berguna untuk membuka banyak file sumber sekaligus, dan sering mengatur desktop saya pada monitor (layar lebar) saya sehingga dua file sumber berdampingan. Saya mungkin pemrograman di keduanya, atau hanya membaca satu dan pemrograman yang lain.

Saya merasa tidak puas dan frustasi ketika salah satu file sumber tersebut lebarnya> 120 karakter, karena itu berarti saya tidak dapat dengan nyaman memasukkan satu baris kode pada satu baris layar. Ini mengganggu pemformatan ke bungkus baris.

Saya katakan '120' karena pada level itulah saya akan merasa terganggu karena kode lebih lebar dari itu. Setelah banyak karakter, Anda harus membelah garis untuk dibaca, apalagi standar pengkodean.

Saya menulis kode dengan 80 kolom dalam pikiran. Ini hanya agar ketika saya membocorkan batas itu, itu bukan hal yang buruk.

Jerub
sumber
11
"Saya menulis kode dengan 80 kolom dalam pikiran. Ini hanya agar ketika saya melakukan kebocoran pada batas itu, itu bukan hal yang buruk." Sama untuk ku.
KobeJohn
4
10 tahun kemudian: Bukankah itu hanya tergantung pada bagaimana Anda mengatur pembungkus garis. Pembungkus garis bisa sepintar atau sebodoh yang Anda inginkan. Jika tidak nyaman untuk membaca itu hanya kegagalan editor Anda.
David Mulder
2
Saya kode untuk 120 karakter tetapi kadang-kadang lebih lama ketika itu sesuai dengan keterbacaan. Format hitam di 120 jika Anda kirim ke. PEP-8 juga mengatakan "tidak apa-apa untuk meningkatkan batas panjang garis hingga 99 karakter" tetapi orang-orang tampaknya sering menekan informasi itu. Hampir tidak ada yang menggunakan terminal yang lebar 80. Pesan log tidak pernah lebar 80.
NeilG
37

Saya percaya mereka yang mempelajari tipografi akan memberi tahu Anda bahwa 66 karakter per baris seharusnya menjadi lebar yang paling mudah dibaca. Meski begitu, jika Anda perlu men-debug mesin dari jarak jauh selama sesi ssh, sebagian besar terminal default untuk 80 karakter, hanya cocok, mencoba bekerja dengan apa pun yang lebih luas menjadi masalah nyata dalam kasus seperti itu. Anda juga akan terkejut dengan jumlah pengembang yang menggunakan layar vim + sebagai lingkungan sehari-hari.

Sean O Donnell
sumber
<flame> Emacs FTW! </flame> +1, meskipun. Saya pikir batas 79 berasal dari hari-hari awal UNIX (dan mungkin MULTICS) yang memiliki terminal karakter 80x25.
Joe D
10
Lingkungan ssh + layar + vim saya tidak bermasalah menampilkan garis panjang.
chrishiestand
54
"66 karakter per baris seharusnya menjadi panjang yang paling mudah dibaca" Saya kira kita harus menulis kode dalam 2 atau 3 kolom, karena itu bagaimana surat kabar disusun?
Mark E. Haase
23
@mehaase: komentar sarkastik Anda cukup dekat dengan kebenaran: editor yang baik dapat melakukan split panel dan menunjukkan hal-hal yang berbeda berdampingan (dari file yang sama atau berbeda). Secara kebetulan, ini biasanya hanya layak ketika kode memiliki standar panjang garis ...
nperson325681
2
@mehaase: Kedengarannya luar biasa, sebenarnya. Aku tidak bercanda.
Teekin
19

Mencetak font monospace pada ukuran standar adalah (pada kertas A4) 80 kolom dengan 66 baris.

Josh
sumber
11
Saya menerima standar ini; ini valid. Tetapi siapa yang mencetak kode lagi? Selain itu, siapa yang mencetak kode dari lingkungan yang tidak toleran terhadap penskalaan atau opsi pemformatan lainnya? Kapan terakhir kali ada orang yang Anda kenal bingung dengan ketidakmampuan mereka untuk membuat garis 100 karakter?
pcorcoran
3
Mengapa orang mencetak kode pada 2012? Ini mengingatkan saya untuk pergi ke konferensi teknologi dan diberi tas dan map yang dicetak penuh dengan presentasi. Ini orang-orang abad ke-21: kirimi saya slide-slide atau kalau tidak tas dan pengikat akan langsung masuk ke tempat pembuangan sampah.
Mark E. Haase
2
jadi mengapa 80-1 lebih baik dari 80-0 atau 80-2?
n611x007
11
"pada ukuran standar" Katamu? Ceritakan lebih banyak tentang ukuran standar yang diterima secara universal ini.
Bruno Bronosky
15
Ya, mari memprioritaskan cara kode terlihat pada kertas cetak di atas segalanya.
Jonathan
8

Inilah mengapa saya suka 80-karakter dengan: di tempat kerja saya menggunakan Vim dan bekerja pada dua file sekaligus pada monitor yang berjalan di, saya pikir, 1680x1040 (saya tidak pernah ingat). Jika garisnya lebih panjang, saya kesulitan membaca file, bahkan ketika menggunakan bungkus kata. Tak perlu dikatakan, saya benci berurusan dengan kode orang lain karena mereka suka antrean panjang.


sumber
tidakkah Anda menggunakan vim untuk javascript / html juga?
elad silver
2
@ eladsilver saya tidak bisa berolahraga jika itu lelucon? :-D
Steven Church
maaf, tidak terlalu mendalam dengan vim, jelas jika Anda bekerja di web Anda menggunakannya juga untuk html / js dan tipe-tipe itu tidak pernah datang dengan batas 80 karakter karena pengembang ujung depan tidak tahu tentang pep8, jadi membuat batas python 80-karakter tidak akan menyelesaikan masalah Anda jika Anda menggunakan lebih dari hanya python. jadi yang saya tanyakan adalah bagaimana Anda menangani bahasa pengkodean lainnya?
elad silver
Saya bekerja di Vim dengan 120 baris karakter. Saya menggunakan: diffthis dengan split horizontal. Jika Anda hanya dapat memuat 160 karakter pada 1680 piksel, Anda harus memiliki ukuran font yang besar.
NeilG
4

Karena spasi putih memiliki makna semantik dalam Python, beberapa metode pembungkusan kata dapat menghasilkan hasil yang salah atau ambigu, sehingga perlu ada batasan untuk menghindari situasi tersebut. Panjang garis 80 karakter telah menjadi standar sejak kami menggunakan teletipe, jadi 79 karakter sepertinya pilihan yang cukup aman.

Chris Upchurch
sumber
4
Ada dua jenis pembungkus kata. Ada pembungkus yang sulit, di mana garis-garis dipecah dengan baris baru, dan ada pembungkus yang lembut, di mana mereka hanya ditampilkan dengan putus, tetapi tetap secara fisik satu baris. Saya tidak melihat masalah dengan yang terakhir.
Jim
4
Kebanyakan editor Python tidak melakukan pembungkusan kata lunak karena menghasilkan kode yang ambigu sulit dibaca dalam bahasa di mana spasi dan lekukan penting.
Chris Upchurch
4
Itu tidak menghasilkan kode yang ambigu atau sulit dibaca asalkan pembungkusnya diidentifikasi secara visual. Kate melakukan ini dan itu berfungsi dengan baik. Jika editor tidak menangani ini, maka itu alasan untuk mengajukan bug terhadap editor, bukan alasan untuk memaksakan gaya pengkodean yang menghindari bug.
Jim
5
Bahkan jika itu ditunjukkan secara visual, itu masih membuat kode lebih sulit untuk dibaca, itulah sebabnya editor Python umumnya tidak mendukungnya.
Chris Upchurch
Sudahkah Anda mencobanya dalam waktu yang lama? Saya sudah. Itu tidak membuat kode lebih sulit untuk dibaca dalam pengalaman saya. Bisakah Anda mendukung klaim bahwa ini sebabnya editor Python tidak menyertakan fitur? Saya belum pernah mendengar klaim itu sebelumnya.
Jim
1

Saya setuju dengan Justin. Singkatnya, baris kode yang terlalu panjang lebih sulit dibaca oleh manusia dan beberapa orang mungkin memiliki lebar konsol yang hanya menampung 80 karakter per baris.

Rekomendasi gaya ada di sana untuk memastikan bahwa kode yang Anda tulis dapat dibaca oleh sebanyak mungkin orang di platform sebanyak mungkin dan senyaman mungkin.

Hanya baca
sumber
10
Ini argumen yang malas. Itu tidak selalu terjadi bahwa 80 baris membahayakan keterbacaan. Pandangan sekilas pada basis kode Python sederhana kompleks yang membungkus di 80 baris sebenarnya menunjukkan sebaliknya - bahwa pembungkus fungsi garis tunggal panggilan ke beberapa baris membuatnya lebih sulit untuk mengikuti WTF yang sedang terjadi.
Jonathan
0

karena jika Anda mendorongnya melampaui kolom ke-80 itu berarti Anda menulis baris kode yang sangat panjang dan rumit yang terlalu banyak (dan karenanya Anda harus melakukan refactor), atau bahwa Anda terlalu menjorok (sehingga Anda harus melakukan refactor).

Stefano Borini
sumber
90
-1, saya tidak berpikir Anda bisa mengatakan bahwa setiap baris melewati batas 80 char memerlukan refactor. Metode kelas sudah indentasi dua kali, tambahkan indentasi lain untuk "jika", dll dan pemahaman daftar sederhana, dan cukup mudah untuk melewati batas 80-char.
42
Belum lagi jika Anda memberi nama simbol sedemikian rupa sehingga dapat dibaca oleh manusia, mis. "Users_directed_graph" alih-alih "usr_dir_gph", maka bahkan expresswion sederhana akan memakan beberapa karakter per baris.
Mark E. Haase
8
Saya selalu menemukan dalam Python bahwa jika saya melebihi 80 karakter itu bijaksana untuk berhenti dan memikirkan mengapa itu terjadi. Biasanya keputusan desain yang salah adalah kesalahan.
Mike Vella
3
Ini juga pengalaman saya. Ini juga membahas nama variabel yang lebih panjang, seperti yang ditunjukkan oleh @mehaase, tapi saya pikir ini menguntungkan. Kombinasi yang tersedia dari tiga kata berurutan (dalam kasus "users_directed_graph") mengerdilkan jumlah komponen yang cukup masuk ke ruang nama tunggal. Saya menganggap kode lama yang saya tulis di mana banyak nama variabel panjang yang serupa berada di namespace yang sama agar lebih sulit dibaca, dan umumnya lebih baik untuk refactor.
TimClifford
4
Dalam bahasa yang membutuhkan indentasi untuk setiap perubahan ruang lingkup, mengatakan bahwa 80 baris karakter sama dengan kompleksitas adalah argumen yang terlalu sederhana. Kadang-kadang 80 karakter hanya diperlukan untuk menjalankan suatu fungsi. IDE / editor modern untuk bahasa lain cukup pintar untuk mengenali ini dan dapat membedakan kapan harus membungkus dan tidak menempatkan pembatasan menyeluruh pada segala sesuatu yang membahayakan keterbacaan secara keseluruhan.
Jonathan