PEP-8 neden maksimum 79 karakterlik bir satır uzunluğu belirtiyor? [kapalı]


235

Neden bu milenyumda Python gerektiğini PEP-8 bir belirtmeniz maksimum hat uzunluğu 79 karakter?

Güneşin altındaki her kod editörü daha uzun satırları işleyebilir. Kaydırma ile ne yapılacağı, içerik oluşturucunun sorumluluğunda değil, içerik tüketicisinin seçimi olmalıdır.

Bu çağda 79 karaktere bağlı kalmanın (meşru) iyi nedenleri var mı?


73
Sorunuzun cevabı içinde PEP-8.
cdleary

29
Daha kısa hat uzunlukları KLOC'nizi artırarak verimliliği artırır. : p
Alex

26
79 karakter sınırı tamamen eski. Her türlü karmaşık kod tabanı, kodun nasıl okunmasını çok daha zor hale getirdiğini gösterir. Örn: github.com/openstack/nova/blob/master/nova/network/manager.py
Jonathan


9
Siz insanlar yan yana fark araçları kullanmıyor musunuz?
endolit

Yanıtlar:


129

PEP-8'in değerinin çoğu, insanların eşitsiz biçimlendirme kuralları hakkında tartışmasını durdurmak ve iyi, tutarlı bir şekilde biçimlendirilmiş kod yazmaya devam etmektir. Tabii ki, hiç kimse 79'un en uygun olduğunu düşünmüyor, ancak 99 veya 119 veya tercih ettiğiniz satır uzunluğunun ne olduğu konusunda belirgin bir kazanç yok. Bence seçimler şu şekildedir: kurala uyun ve savaşmak için değerli bir neden bulun ya da okunabilirliğin ve üretkenliğin satır uzunluğuna göre nasıl değiştiğini gösteren bazı veriler sağlayın. İkincisi son derece ilginç olurdu ve bence insanların fikirlerini değiştirme şansı iyi olurdu.


28
Çoğu okuma çalışması satır başına karakter değil inç olarak yapılır. 66 karakter kuralı gazete okumak için yapılan çalışmalara dayanmaktadır. Son çalışmalar , çevrimiçi makaleleri okurken, okuma hızının anlama başına bir kayıp olmadan satır başına yaklaşık 120 karaktere (12 puntoda 10 inç) kadar arttığını göstermiştir.
Pace

7
Aslında bu konuyu okuyan herkes 79 karakterin en uygun olduğunu düşünüyor . Bu yüzden PEP8'e eklendi! Bu cevap aslında yanlış. Bu bir doğru olanı
erikbwork

6
Sorunun 79'un neden 80 veya 78'den daha iyi olduğunu düşündüm
n611x007

157
there's no obvious gain in changing it to 99 or 119 or whatever your preferred line length is Bu pek çok açıdan yanlıştır. Bir satırı 40 karaktere sar ve bana ne kadar okunabilir olduğunu söyle. Açıkçası daha az sarma = 2015'te yaptığınız ekran alanına sahip olduğunuz sürece daha fazla okunabilirlik. Sarma okunabilirliği etkiler. Okunabilirlik sürdürülebilirliği etkiler. Sürdürülebilirlik kaliteyi etkiler. 80 karaktere sarılıyorsanız kalite etkilenir. Tam durak.
Jonathan

6
Kod içermeyen herhangi bir şeyle okunabilirliği tartışmak işe yaramaz çünkü bu çalışmalar metin akıyor. Kod, her satırın farklı (karakter) satır uzunluğu ile tamamen farklı görünüyor. Ve satır sonuna kadar yazsanız bile, girinti satır başına karakter miktarını değiştirir.
Corvince

111

Kodunuzu yalnızca makine tarafından okunabilir değil, insan tarafından okunabilir tutmak. Birçok cihaz aynı anda yalnızca 80 karakter gösterebilir. Ayrıca, daha büyük ekranları olan kişilerin birden çok pencereyi yan yana olacak şekilde ayarlayabilmeleri için çok görevli olmalarını kolaylaştırır.

Okunabilirlik aynı zamanda zorunlu hat girintisinin nedenlerinden biridir.


58
Evet, verilmiş. Ama neden 79? Neden 100 veya 120 değil? Her şeyi okunabilir tutmak her iki şekilde de işe yarar. Çok fazla yukarı ve aşağı kod okuması yapmak da zor.
pcorcoran

17
Birçok cihazın yalnızca 80 karakter gösterebileceği doğrudur. Kaç tanesi yumuşak ambalajlama yapamıyor?
Jim

39
Ayrıca, kod sarmasının olmaması tercih edilir. Bir kullanıcı deneyimi açısından bakıldığında, çoğu için kabul edilemez.
Justin Bozonier

8
MVS gibi 72 karakterden uzun satırları işleyemeyen bazı işletim sistemleri vardır. PEP-8 burada yardımcı olmayacak. 79 karakterden oluşan keyfi bir sınır belirlemek, satır başına karakterlerin nasıl iyi olduğu editöre, monitöre, kullanıcının kişisel tercihlerine vb. Bağlıdır.
codymanix

96
79 karakter, programcıların her şeyi daha uygun hale getirmek için daha kısa şifreli değişken ve işlev adları kullanmasını sağlar. Bu, okunabilirlik açısından kötüdür.
Gert Steyn

46

Ben günlük olarak bir çok kod ile uğraşmak zorunda olan bir programcıyım. Açık kaynak ve evde neler geliştirildi.

Bir programcı olarak, birçok kaynak dosyasının bir kerede açık olmasını yararlı buluyorum ve genellikle (geniş ekran) monitörümde masaüstümü iki kaynak dosya yan yana olacak şekilde organize ediyorum. Her ikisinde de programlama yapıyorum ya da sadece birini okuyor ve diğerinde programlıyor olabilirim.

Bu kaynak dosyalardan birinin genişliği> 120 karakter olduğunda tatmin edici ve sinir bozucu buluyorum, çünkü bir satır satırına rahatça bir kod satırı sığdıramıyorum. Biçimlendirmeyi satır kaydırmaya ayarlar.

'120' diyorum, çünkü koddan daha geniş olmaktan rahatsız olacağım düzey. Bu birçok karakterden sonra, standartları kodlamak yerine, okunabilirlik için satırlar arasında bölünmelisiniz.

80 sütunu düşünerek kod yazıyorum. Bu sadece o sınırdan sızdığımda, o kadar da kötü bir şey değil.


11
"80 sütun aklıma kod yazıyorum. Bu sadece o sınırın üzerinden sızıntı yaptığımda o kadar da kötü bir şey değil." Benim için de aynı.
KobeJohn

4
10 yıl sonra: Bu sadece satır kaydırmayı nasıl ayarladığınıza bağlı değil. Çizgi sarma, istediğiniz kadar akıllı veya aptal olabilir. Okumak rahatsız olursa, bu sadece editörünüzün bir başarısızlığıdır.
David Mulder

2
120 karaktere kod yazıyorum, ancak okunabilirliğe uygun olduğunda bazen daha uzun. Siyah formatı 120'de söylersen. PEP-8 ayrıca "satır uzunluğu sınırını 99 karaktere çıkarmanın iyi olduğunu " söylüyor ancak insanlar bu bilgileri çoğu zaman bastırıyor gibi görünüyor. Neredeyse hiç kimse 80 genişliğinde terminal kullanmıyor. Günlük iletileri hiçbir zaman 80 geniş değildir.
NeilG

37

Tipografi okuyanların size bir satırdaki 66 karakterin uzunluk için en okunabilir genişlik olması gerektiğini söyleyeceğine inanıyorum. Yine de, bir ssh oturumu üzerinde bir makinede uzaktan hata ayıklamanız gerekirse, çoğu terminal varsayılan olarak 80 karakter, 79 sadece uyuyor, daha geniş bir şeyle çalışmaya çalışmak böyle bir durumda gerçek bir acı haline geliyor. Ayrıca vim + screen'i günlük ortam olarak kullanan geliştiricilerin sayısından da şaşıracaksınız.


<flame> Emacs FTW! </flame> +1. Sanırım 79 sınırı, 80x25 karakter terminalleri olan UNIX'in (ve muhtemelen MULTICS) ilk günlerinden geliyor.
Joe D

10
Ssh + ekran + vim ortamlarımın uzun satırları görüntüleme sorunu yok.
chrishiestand

54
"Satır başına 66 karakterin uzunluk için en okunabilir genişlik olması gerekiyordu" Sanırım 2 veya 3 sütuna kod yazmalıyız, çünkü gazeteler bu şekilde düzenlenmiş mi?
Mark E. Haase

23
@mehaase: alaycı sözünüz gerçeğe oldukça yakın: iyi editörler bölme bölmeleri yapabilir ve farklı şeyleri yan yana (aynı veya farklı dosyalardan) gösterebilir. Tesadüfen, kod genellikle bir satır uzunluğu standardına sahip olduğunda bu genellikle mümkündür ...
nperson325681

2
@mehaase: Gerçekten harika görünüyor. Şaka yapmıyorum.
Teekin

19

Tek aralıklı yazı tipini varsayılan boyutlarda yazdırmak (A4 kağıda) 80 sütun 66 satırdır.


11
Bu standardı kabul ediyorum; geçerli. Peki kim artık kod yazdırıyor? Ayrıca, kodlama, ölçekleme veya diğer biçimlendirme seçeneklerine karşı toleranssız olan bir ortamdan kim yazdırır? En son ne zaman tanıdığınız bir kişi 100 karakterden oluşan bir satır oluşturamama konusunda zorlandı?
pcorcoran

3
Neden insanlar 2012'de kod yazdırıyor? Bu bana bir teknoloji konferansına gitmeyi ve sunumlarla dolu bir çanta ve basılı bir cilt tutmayı hatırlatıyor. Bu 21. yüzyıl insanları: bana e-posta gönderin ya da çanta ve bağlayıcı doğrudan bir düzenli depolama alanına gidiyor.
Mark E. Haase

2
neden 80-1 80-0 veya 80-2'den daha iyi?
n611x007

11
"varsayılan boyutlarda" mı diyorsunuz? Bana evrensel olarak kabul edilen bu varsayılan boyutlar hakkında daha fazla bilgi verin.
Bruno Bronosky

15
Evet, kodun basılı kağıtlarda her şeyden önce nasıl görüneceğine öncelik verelim.
Jonathan

8

İşte neden 80 karakteri ile sevdim: işte Vim kullanıyorum ve aynı anda iki dosya üzerinde çalışıyorum, bence 1680x1040 (asla hatırlayamıyorum). Eğer çizgiler artık ise, kelime kaydırma kullanırken bile dosyaları okumakta zorlanıyorum. Söylemeye gerek yok, uzun çizgileri sevdiklerinden başkalarının kodlarıyla uğraşmaktan nefret ediyorum.


javascript / html için vim kullanmıyor musunuz?
elad gümüş

2
@eladsilver Şaka ise çalışamam? :-D
Steven Kilisesi

üzgünüm, vim ile çok derin değil, açıkçası web'de çalışırsanız html / js için de kullanırsınız ve ön uç geliştiricileri pep8 hakkında bilmediği için bu türler asla 80 char sınırı ile gelmez, bu yüzden python sınırı 80-char yapmak daha sonra sadece python kullanırsanız sorununuzu çözmez. Sorduğum şey diğer kodlama dillerini nasıl ele alacağınız?
elad gümüş

Vim'de 120 karakter çizgisiyle çalışıyorum. Ben kullanıyorum: yatay bölmeli diffthis. 1680 piksele yalnızca 160 karakter sığdırabiliyorsanız büyük bir yazı tipi boyutuna sahip olmanız gerekir.
NeilG

4

Beyaz alanın Python'da anlamsal anlamı olduğundan, bazı sözcük kaydırma yöntemleri yanlış veya belirsiz sonuçlar üretebilir, bu nedenle bu durumlardan kaçınmak için bir sınır olması gerekir. Teletipler kullandığımızdan beri 80 karakterlik bir satır uzunluğu standarttı, bu yüzden 79 karakter oldukça güvenli bir seçim gibi görünüyor.


4
İki tür kelime kaydırma vardır. Çizgilerin yeni satırlarla kesildiği sert sarma var ve sadece aralarla görüntülendikleri , ancak fiziksel olarak tek bir satır olarak kaldıkları yumuşak sarma var . İkincisi ile ilgili herhangi bir sorun görmüyorum.
Jim

4
Python editörlerinin çoğu yumuşak sözcük kaydırma yapmaz, çünkü boşluk ve girintinin önemli olduğu bir dilde okunması belirsiz bir kod üretir.
Chris Upchurch

4
Sargı bir şekilde görsel olarak tanımlandığı sürece belirsiz veya okunması zor kod üretmez. Kate bunu yapar ve iyi çalışır. Bir düzenleyici bunu ele almıyorsa, bu hataya karşı bir kodlama stili uygulamak için bir neden değil, editöre karşı bir hata dosyalamak için bir neden değildir.
Jim

5
Görsel olarak belirtilse bile, kodu okumayı çok daha zorlaştırır, bu nedenle Python editörleri genellikle bunu desteklemez.
Chris Upchurch

Gerçekten uzun bir süre denediniz mi? Sahibim. Benim durumumda kodun okunmasını zorlaştırmaz. Python editörlerinin bu özelliği içermemesinin iddiasını yedekleyebilir misiniz? Bu iddiayı daha önce hiç duymamıştım.
Jim

1

Justin ile aynı fikirdeyim. Ayrıntılı olarak açıklamak gerekirse, aşırı uzun kod satırları insanlar tarafından okunması daha zordur ve bazı insanlar her satırda yalnızca 80 karakter barındırabilen konsol genişliklerine sahip olabilir.

Stil önerisi, yazdığınız kodun olabildiğince çok sayıda platformda ve olabildiğince konforlu bir şekilde okunabilmesini sağlamak içindir.


10
Bu tembel bir argüman. 80 hattın okunabilirliğe zarar vermesi her zaman geçerli değildir. 80 çizgiyi saran, herhangi bir mütevazi derecede karmaşık Python kod tabanına hızlı bir bakış, bunun tam tersini gösterir - tek hat işlev çağrılarının birkaç satıra sarılmasının WTF'nin takip edilmesini zorlaştırır.
Jonathan

0

çünkü 80. sütunun ötesine geçerseniz, ya çok fazla iş yapan çok uzun ve karmaşık bir kod satırı yazıyorsunuz (ve böylece yeniden düzenleme yapmalısınız) ya da çok fazla girintili olmalısınız (ve böylece yeniden düzenleme yapmalısınız).


90
-1, kategorik olarak 80 char sınırını aşan herhangi bir çizginin bir refactor gerektirdiğini söyleyebileceğinizi sanmıyorum. Sınıf yöntemleri zaten iki kez girintilidir, "if" vb. İçin basit bir liste ve basit bir liste kavrayışı ekleyin ve 80 karakter sınırını aşmak oldukça kolaydır.

42
Sembolleri insan tarafından okunabilecek şekilde adlandırırsanız, örneğin "usr_dir_gph" yerine "users_directed_graph" adını verirseniz, basit bir ifade bile satır başına birkaç karakter tüketir.
Mark E. Haase

8
Her zaman Python'da buldum, eğer 80 karakteri aşarsam, bunun nedenini durdurmak ve düşünmek akıllıca. Genellikle kötü tasarım kararı yanlıştır.
Mike Vella

3
Bu da benim tecrübelerim oldu. @Mehaase'in işaret ettiği gibi daha uzun değişken isimlerini de ele alıyor, ancak bunun bir fayda olduğunu düşünüyorum. Birbirini izleyen üç kelimenin mevcut kombinasyonları ("users_directed_graph" durumunda), tek bir ad alanına makul şekilde uyan bileşenlerin sayısını gösterir. Birçok benzer uzun değişken isimlerinin aynı ad alanında okunması daha zor ve genellikle daha iyi refactor olduğu yerlerde yazdığım eski kodu düşünürüm.
TimClifford

4
Her kapsam değişikliği için girintiler gerektiren bir dilde, 80 karakter satırının karmaşıklığa eşit olduğunu söylemek aşırı basit bir argüman. Bazen 80 karakter bir işlevi çağırmak için gereken şeydir. Modern IDE'ler / diğer diller için editörler bunu tanıyacak kadar akıllıdır ve genel olarak okunabilirliğe zarar veren her şeye battaniye kısıtlamaları koymak yerine ne zaman sarılacağını fark edebilir.
Jonathan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.