Optimum kod genişliğine ilişkin çalışmalar?


131

IDE'nizde "Sağ Kenar Boşluğunu Görüntüle" seçeneğini etkinleştirirseniz, varsayılan olarak 80 karakter olması muhtemeldir. Birkaç yıl önce bulunduğum bir şirkette standart olması dışında sebepsiz yere 120 olarak değiştirme eğilimindeyim ve başka hiçbir şirket bana bunu farklı yapmamı söylemedi.

Sorum şu ki, 80 karakterin kod okunabilirliği için optimal maksimum genişlik olduğunu gösteren herhangi bir çalışma var mı, yoksa bu değer sadece "bu her zaman böyleydi" mi ve kimse gerçekten neden böyle olduğunu bilmiyor mu? Ve bir kod satırının genişliği kodlama standardınızın bir parçası olmalı mı?


1
Herhangi bir çalışma bilmiyor olsam da, bu soruya cevap olarak pek çok fikir bulacaksınız: * Bir kod dosyasında bu gün ve yaş için maksimum 80 karakter genişliğini zorunlu
Adam Bellaire

3
bildiğim hiçbir çalışma yok, ancak farklı projelerin kodlama standartlarına bakmayı ilginç bulabilirsiniz. Örneğin Google'ınki 80 karakterdir. ( code.google.com/p/google-styleguide ) WebKit olarak (ala Apple's?) AFAIK ( webkit.org/coding/coding-style.html ) sınırı yoktur . Mozilla'nınki 80 ( developer.mozilla.org/En/Mozilla_Coding_Style_Guide#Line_length )
gman

"Bürokrat" ı hecelememizin nedeniyle aynıdır bizim yaptığımız gibi. Çünkü uzun zaman önce birisi, o zamanlar mantıklı olan veya olmayan bir mantık standardı tanımladı. Yazım açısından Latince'ye, bir kağıt delikli kartın boyutunu kodlamak için şüpheli bir hayranlık uyandırdı. Sonra bir yöntem "doğru" olarak etiketlendi. Küçük bürokratlar o zamandan beri standartları uyguluyorlar.
51'de Tuntable

Yanıtlar:


116

Aslında, 80 sütunlu şey DOS'tan çok önce gelir. 80 sütunlu aygıtlar olan kart deliklerinden gelir.

Ve OP'nin sorusuna cevap vermek için, yaklaşık 600 yıldır bir "çalışma" devam ediyor - basılı kitap. Bunlar yüzyıllar boyunca, her şeyden önce okunabilirlik göz önünde bulundurularak, metnin ortalama satır uzunluğunun yaklaşık 60 karakter olduğu şu anda bulunduğumuz konuma gelişti. Okunabilirlik için daha dar kenar boşlukları kullanın.


85
Kullanılabilirlik açısından doğal dili okumakla bir programlama dili okumayı karşılaştırabileceğine gerçekten inanmıyorum.
Frug

25
@Frug - aslında, muhtemelen yapabilirsiniz. 65 karakter genişliğinin nedeni, daha büyük satırların okunamaması değil, göz bir sonraki satıra geçtiğinde çok sıkı bir kavis olmasından kaynaklanıyor. Sen edebilirsiniz satır yüksekliğini artırarak toparlamaya, ama bu bir IDE kaçınmak için bir şey muhtemelen bu yüzden, anlam iletmek için aralık kullanım bloğuna zorlaştırır.
Jimmy Breck-McKye

32
@Jim - Benim doğal dilim, içinde 30 karakter bulunan kelimeler içermiyor (zaten kullanmıyorum) ve bir programlama dilinden tamamen farklı bir şekilde ayrıştırıyor. Uzun bir koşullu veya uzun yöntemlerin ve sınıfların bir kombinasyonu olsun, genellikle bir kod satırını diğerlerinden ayrı olarak gruplayabilirsiniz. Bunu girintiyle birleştirin ve iki dil arasındaki karşılaştırma saçma hale gelir. Okunabilirliği ve satır uzunluğunu bilimsel olarak inceleyen herhangi birinin, farklılıkları yıkamanıza itiraz edeceğinden şüphem yok.
Frug

10
@Frug - İtirazlarınızın, yaptığım iddiaların hiçbiriyle nasıl bağlantılı olduğunu gerçekten anlamıyorum, ancak bu girintinin önerdiğim modeli bozduğunu görebiliyorum. Yine de bana 'Jim' deme.
Jimmy Breck-McKye

17
Bir kitap tipik olarak gözlere bir monitörden çok daha yakın yerleştirilir, bu da okuyucu kitabı boynunu döndürmeden okuyabiliyorsa, satır başına daha az karaktere izin verildiği anlamına gelir. Bir ekran genellikle bir kitabın uzaklığına yerleştirilmez; bu, maksimum göz açısı sınırları içinde tutularak satır başına daha fazla karakterin kullanılabileceği anlamına gelir. Ayrıca, kod okunduğu kadar okunmaz, bu da bu genişliği daha az önemli hale getirir. Ben (YMMV), dizüstü bilgisayarımın ekranında 120 karakterlik kod içeren satırları kolayca takip edebilir , ancak bu, 15 "dizüstü bilgisayarımdaki 2 emacs arabelleği için çok geniş, ne yazık ki.
Obscaenvs

104

Yazılımınızın bakımını daha sonra yapması ve 80 karakter sınırına bağlı kalması gereken programcılara merhamet edin.

80'i tercih etme nedenleri:

  • Dizüstü bilgisayarlarda daha büyük yazı tipiyle okunabilir

  • Karşılaştırma için iki versiyonu yan yana koymak için alan bırakır

  • IDE'de gezinme görünümleri için alan bırakır

  • Rasgele satır kesmeden yazdırır (ayrıca e-posta, web sayfaları vb. İçin de geçerlidir)

  • Karmaşıklığı tek satırda sınırlar

  • Girintiyi sınırlar, bu da yöntemlerin / işlevlerin karmaşıklığını sınırlar

Evet, kodlama standardının bir parçası olmalıdır.


10
Bunlar, satır genişliğini 80 karakter veya daha az tutmak için harika nedenlerdir. Açıkça düşünülmüş ve doğru olan cevabınızın daha fazla puan almamasına gerçekten şaşırdım (hayal kırıklığına uğradım). Bu listeye şunu ekleyeceğim: (1) yatay kaydırma eğlenceli değil. (2) Üzerinde çalıştığınız kodun yoğunluğunu, o kodu birden çok sütun halinde görüntüleyerek büyük ölçüde artırabilirsiniz. Diğer satırların çoğunun bulunmadığı halde çok sağa uzanan birkaç satırınız olduğunda, gayrimenkulün büyük bir kısmı boşa gider.
Donnie Cameron

4
tamam ama birkaç girintiye sahip bir kod bloğu olduğunda ne olur? bu benim başıma geldi ve 80 karakter hiç eğlenceli değil.
EKanadily

14
Limits the complexity in one lineKarmaşıklığı birden çok satıra yaymanın neden daha iyi olduğundan emin değilim. Sadece zihinsel yığınınıza daha fazla baskı yapar.
Jonathan

4
Bu çok eski bir konu. ancak birçok geliştiricinin 27 inçlik monitörler kullandığına hala katılıyor musunuz :-)? Demek istediğim, eğer görme bir sorunsa, daha büyük bir ekran yardımcı olabilir. 8 yıl önce hala 17 veya 20 inç monitörler üzerinde ve hatta bazıları 4: 3 çözünürlüklerde çalışıyorduk.
Mathijs Segers

1
@MathijsSegers, monitör boyutundan veya çözünürlüğünden bağımsız olarak, metni görüş alanınızın orta 30 derecesi içinde tutmak daha rahattır. Yan yana monitörlerde birden fazla pencere açıkken çalışırken, birinden diğerine bakmak için başımı çevirme eğilimindeyim. Bir kişinin bir satırın bir ucundan diğerine okuyabilmesi için başını çevirmesi veya gözlerini sonuna kadar döndürmesi gerekmemelidir. Bu kadar hızlı göz veya baş dönmesi, tüm gün yapılırsa muhtemelen baş dönmesine neden olur.
maurice

41

Çalışmam yok ama deneyimlerimi anlatacağım.

Bunu bulmak yatay kaydırma sıkıcı metin ile uğraşırken. Kodun kullanılacağı ortama bakıyorum ve bu bağlama göre genişlik standartları belirledim.

Örneğin, XWindows üzerinde Emacs'de çalışırken, 2 Emacs penceresinin her zaman yan yana olması iyi çalıştı . Bu onları 80 karakterle sınırladı, yani bu benim maksimum satır uzunluğumdu.

Bir noktada, 1920x1200 bir ekranda Visual Studio'da çalıştım. Tüm araç pencereleri bir tarafa yerleştirilmiş olarak en üst düzeye çıkarırdım. Yaklaşık 100 karakterde yan yana iki düzenleyici penceresi için yeterli alan kalmıştı.

Ayrıca en uzun satırların uzun parametre listelerine sahip yöntem çağrılarından geldiğini görüyorum . Bu bazen bir kod kokusudur : belki de yöntemin yeniden düzenlenmesi gerekir .

Siz ve yardımcı programcılarınız yüksek çözünürlüklü ekranlara ve keskin görüşlere sahipseniz, kesinlikle küçük bir yazı tipi ve uzun satırlar kullanın. Tersine, kısa çizgilere ihtiyacınız olabilir.


1
artı "keskin gözler" için bir tane çünkü gerçekten başıma gelen buydu.
EKanadily

26

Şirket aksini belirtmediği sürece normalde 120-150 kullanıyorum. Bununla birlikte, kod türüne de bağlıdır:

  • Ben (neredeyse) hiçbir zaman tek bir satırda birden çok ifade kullanmam
  • Uzun satırları (> 12) yalnızca benzer görünen çizgiler hizalanıp kesilemiyorsa kullanırım.
  • Her zaman yeterli boşluk / parantez kullanırım vb.
  • Daha kısa isimlerin yerine daha uzun değişken isimlerini tercih ederim

Birkaç yıl öncesine kadar 100 ile sınırlandırdım, ancak şimdi normal olarak geniş ekranlar kullanılıyor ve yüksek çözünürlüklü monitörler 120 dizüstü bilgisayarlarda bile görülebiliyor (ki bunu neredeyse hiç kullanmıyorum).

Bir ekranı bir kitapla karşılaştırmak pek iyi değildir çünkü bir kitapta daha fazla dikey alan ve bir ekranda daha fazla yatay alan vardır. Her zaman bir işlevi maks. Tutmaya çalışırım. uzun bir görünür ekran.


6
Birden çok pencerenin yan yana açık olmasıyla satır başına 120-150 karakter nasıl çalışır? Birçok kod düzenleyici penceresini yan yana açık tutuyor musunuz? - 30 '' monitörümde, satırlarımı 97 karakter / satır ile sınırlandırırsam yan yana 3 pencereye sahip olabilirim.
KajMagnus

1
Büyük bir ekranda kodluyorum ve daha büyük miktarları da seviyorum. 110-130'u hedefliyorum. Ana hedeflerimden biri okunabilirliktir ve ifadeleri 2-3 satıra bölmek bazen bana göre daha az okunabilir. Bazı yorumlar, devre dışı bırakılmış kodlar ve bazı sabit kodlanmış değerler gibi görmek istemediğim önemsiz şeyleri gizlemek için bazen 500-1000'e gideceğim. Bunun programcıya da bağlı olduğunu düşünüyorum. Çoğu kodlayıcı 80'de çalışıyorsa, paylaşılan kodla çalışırken bunu hedeflemek en iyisidir.
Sunsetquest

10

Belki 80 karakter de bu kötü alıcı zincirlerinden kaçınmak için iyi bir noktadır:

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

80 karakterle sınırlarsanız, belki birisi bu değişkenleri yerelleştirebilir ve boş kontrol vb. yapabilir, ancak belki çoğu programcı bir sonraki satıra kaydırmalarına izin verir. bilmiyorum

Ayrıca starblue'nun da bahsettiği gibi 80 karakter harika. Bu kesinlikle kodlama standartlarına girmelidir.


5
Bilginize, bunun gibi aşırı yöntem zincirleme, tren kazası anti-paterni olarak bilinir .
Dennis

4

Donanım kısıtlamalarını ve doğal dile karşı kodu okuma şeklimizdeki farklılıkları göz ardı ederek, satırları yaklaşık 80 karakterle sınırlamak için üç ana neden görüyorum.

  1. İnsan gözbebekleri yuvarlaktır, gerçekten dar ve geniş değildir ve çözünürlüklerinin çoğu ortadadır . Bir seferde saatlerce okurken, gerektiğinde tek bir kaydırma çubuğu kullanarak gözleri kısa yaylar halinde süpürmek çok daha rahattır. Kodun okunabilirliğine özgü resmi bir çalışma bilmiyorum, ancak kendi gözlemlerime göre, 2 fit uzakta, 10pt tek aralıklı yazı tipinde metin boyutuyla, 100 karakter yatay alanımın yaklaşık 1 / 3'ünü kaplıyor görüş veya yaklaşık 60 derece ( tüm gözlerimizin çözünürlüğünün olduğu 30 derecenin dışında ).
  2. Çoğu kişi, iş yerinde büyük bir monitör kullanır, böylece birden fazla şeyi ileri geri tıklamadan görebilirler, tek bir şeyi gerçekten büyük görmeleri için değil.
  3. Daha kısa satırlar daha az karmaşıklık içerir, bu da bir geliştiriciyi kodlarını daha kolay anlaşılır birimlere dönüştürmeye zorlar.

3

En iyi okunabilirlik için bir belgenin genişliğinin yaklaşık iki alfabe veya 60-70 karakter olması gerektiğini bir yerde okuduğumu (sanırım Çevik Dokümantasyonda olduğunu düşünüyorum) açıkça hatırlıyorum . Sanırım eski terminallerin çizgi genişliği, kısmen bu eski tipografik kuraldan geldi.


3

Sağ kenar boşluğu seçeneği, kodu yazdıracaksanız size sayfanın genişliğini göstermeyi amaçlamaktadır ve daha önce 80 olarak ayarlandığını söylemişti, çünkü GUI'den önceki satır uzunluğunun tümüyle delinmeye kadar geri döndüğünü söyledi. kartları.

Son zamanlarda bazı bloglarda (hangi blogu hatırlayamıyorum) kod kalitesini iyileştirmek için IDE yazı tipi boyutunu artırmaya yönelik bir öneri gördüm, bunun arkasındaki mantık, ekrana daha az kod sığarsa daha kısa satırlar yazacağınız ve shouter fonksiyonları.

Bana göre daha kısa satırlar kodu okumayı ve hata ayıklamayı kolaylaştırır, bu yüzden satırları kısa tutmaya çalışıyorum, eğer kendinizi daha iyi kod yazmak için bir sınır belirlemeniz gerekiyorsa, sizin için neyin işe yaradığını seçin - ayrıca daha üretken iseniz daha uzun satırlar sayfa boyutunu ve kodu yalnızca geniş ekranlarda büyütmekte özgürdür.


1

Bazı kişilerin diğer yanıtlarda da belirttiği gibi, 80 karakter sınırının nedeni kısmen tarihsel (delikli kartlar, küçük ekranlar, yazıcılar vb.) Ve kısmen biyolojiktir (hangi satırda olduğunuzu izlemek için genellikle tamamını görebilmek iyidir. başını çevirmeye gerek kalmadan çizgi).

Bununla birlikte, lütfen hala insan olduğumuzu ve kendi sınırlarımızı çözmek için araçlar geliştirdiğimizi unutmayın. Karakter sınırlaması hakkındaki tüm tartışmayı görmezden gelmenizi ve uzunluklarına bakılmaksızın anlamlı şeyler yazmanızı ve satırları düzgün bir şekilde takip etmenize yardımcı olabilecek bir IDE veya metin düzenleyici kullanmanızı öneriyorum. Sekmeler ve boşluklar tartışmasında girinti için aynı argümanı kullanarak ve ayrıca girintilerin ne kadar geniş olması gerektiğini bir girinti işaretçisi (en yaygın olarak sekme) kullanmanızı ve insanların bunları görüntülemek için kendi IDE'lerini veya metin düzenleyicilerini yapılandırmalarını öneriyorum. onlar için en rahat buldukları gibi.

Her satıra sabit sayıda karakter eklemek, hedef kitle dışındaki herkes için işleri her zaman daha kötü hale getirecektir. Bununla birlikte, eğer kodu asla paylaşmayacaksanız; o zaman bu tartışmanın başlamasına bile gerek yok. Kodu paylaşmak isterseniz, muhtemelen sizin (veya başka birinin) ideallerini onlara zorlamak yerine, insanların ne istediklerine kendi başlarına karar vermelerine izin vermelisiniz.


0

Bildiğim kadarıyla 80 karakter, komut satırı editörleriyle uyumluluğu sağlamak için bir kodlama standardı olarak kullanılır (varsayılan terminal genişliği tipik olarak 80 karakterdir). Modern IDE'ler ve geniş ekran çözünürlükleri ile 80 karakter muhtemelen "optimal" değildir, ancak birçok geliştirici için terminalde okunabilirliği korumak çok önemlidir. Bu nedenle, yakın zamanda kod genişliği için fiili standart olarak 80 karakter genişliğinin değiştirilmesi olası değildir. Ve son sorunuza cevap vermek için, evet, kod genişliğinin yanı sıra kodunuzun okunabilirliğini etkileyecek diğer özellikler kodlama standartlarınızda ele alınmalıdır.

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.