Açıklayıcı adlandırma ve 80 karakter satırı [kapalı]


17

Bu iki değerli programlama uygulamasını sık sık duyuyorum: (1) kod satırı 80 veya daha az karakter olmalı ve (2) değişkenler, yöntemler, sınıflar vb. İçin açıklayıcı adlar kullanmalı. Ancak bu iki tavsiye kelimesinin de gerekçelerini anlıyorum. , sık sık birbirlerinin ödünleşimleri gibi görünüyorlar. Kodumu 80 karakter / satırın altında tutarsam daha az açıklayıcı adlar kullanırım (özellikle her girintinin 4 karakter olduğu sayılan Python'da), ancak daha açıklayıcı adlar kullanırsam, 80 karakterden uzun satırlarla sonuçlanırım.

Öyleyse sorum şu iki seçim tavsiyesinden hangisinin seçim yapılması gerekiyorsa uyması daha önemli? Bunu bağımsız (hobi) bir programcı olarak merak ediyorum, ama daha da önemlisi, daha büyük bir şirkette çalışan bir yazılım mühendisi açısından.


4
@BillyONeal Büyük ekranlı, 120 :)
BЈовић

4
Sanırım en az 130
9dan

8
80'i tercih ederim, çünkü daha sonra dizüstü bilgisayarımda 2 dosyayı yan yana açabiliyorum.
Honza Brabec

5
80 karakterden uzun satırlar okunamaz olma eğilimindedir. Yani 80 iyi bir sınır. Açıklayıcı çok ayrıntılı olması gerekmez. Ve kapsamı bağlıdır: küçük kapsam kısa değişken isimleri, büyük kapsam daha uzun isimler. Ve elbette geniş kapsamdaki değişkenlerden kaçının. Eğer varsa, fonksiyonel bir dil kullanın ve kodunuzu çok derin girintili olduğunda daha küçük fonksiyonlarda kırın -> çok küçük kapsam == kısa varyasyonlar. İşlev adları benzerdir, ancak kapsamları daha büyük olduğundan genellikle biraz daha uzundur.
Peer Stritzinger

4
@ ott--: C ++ sözdizimine göre gerçekten uzun bir çizgiyi kırabilecek ve başlangıcını başlangıçtan bir seviye daha sunan bir editör gördünüz mü? Aksi takdirde bu öneri işe yaramaz.
Jan Hudec

Yanıtlar:


34

Girintilerinizi az, adlarınızı açıklayıcı tutun ve bir satırı kırmaktan korkmayın.

Girintilerinizi az tutun.

Genellikle kendimi girintiler ile açıklayıcı adlandırma arasındaki bir mücadelede bulduğumda, bir adım geriye gidip girinti düzeyime bakarım. 3 veya 4 seviyeden daha fazla girintiliyorsanız (2 seviye birçok durumda otomatik ve kaçınılmazdır. Oku: sınıf yöntemi tanımı), kodunuzu yeniden yapılandırmak, bir işlevi veya yönteme işlevselliği soyutlamak isteyebilirsiniz.

Adlarınız açıklayıcı

Adlarınızı her zaman açıklayıcı tutmalısınız. Açıklayıcı isimler kendi kendini belgeleyen kodlar oluşturur. Bazı durumlarda adları kısaltmayı deneyebilirsiniz, ancak önce okunabilirlik gelir.

Çizgiyi kırmaktan korkma

Kahretsin olur. 80 karakterin üzerine çıkarsanız ve hatta herhangi bir boşluk geri kazanmayı görmüyorsanız - onu kırın. Çoğu dil satır sonlarını umursamaz, bu nedenle satırı birden çok bölüme ayırın. Sadece rastgele bir yer seçmeyin. İşleri mantıksal olarak gruplandırın ve çizgiyi kırdığınızda başka bir seviyeye girinti uygulayın.


3
Açıklayıcı adların uzun adlarla aynı olmadığı unutulmamalıdır. Bağlamdan kolayca görülebilen şeylerin tekrarından kaçınmak ve dikkatlice seçilmiş bir avuç kısaltma (sadece çok yaygın kavramlar için) kısa açıklayıcı isimlere doğru uzun bir yol kat edebilir.
Jan Hudec

18

Neden ikisi de olmasın?

Her şeyden önce, "tanımlayıcı" ve "ayrıntılı" aynı değildir. Örneğin, oldukça yerel bir döngü yazıyorsanız i, döngü değişkeni için çok iyi bir değişken adıdır; current_iteration_indextartışmasız daha açıklayıcı ve kesinlikle daha ayrıntılı olsa da, çok daha kötüdür ve hiç bilgi eklemez, çünkü ibir döngü değişkeni olarak kullanımı hemen hemen evrensel olarak kabul edilir ve bundan başka bir anlamı yoktur i.

İyi değişken isimleri açıklayıcıdır, çünkü dilin deyimine ve kod tabanının kurallarına aşina olan bir programcı rollerinin ne olduğunu kolayca tahmin edebilir, ancak işleri kompakt tutacak kadar özlüdür.

80 karakterlik sınır, 1970'lerin metin terminallerinin teknik sınırlamalarının bir sonucu olarak, bugün hala birçok kişi tarafından değer görüyor ve hala teknik nedenler olsa da (bazı ağ protokollerinde maksimum satır uzunlukları, özellikle e-posta ile ilgili), daha zorlayıcı nedenler psikolojik ve sosyal nedenlerdir. 66 karakter işaretinin etrafındaki satır uzunluklarının doğal dil nesirleri için en rahat okuma deneyimini sağladığı ortaya çıkıyor (yazı tipi boyutu ilginç bir şekilde çok fazla bir fark yaratmıyor ve sonuç olarak ekran veya kağıt boyutu da yok); 80 karakterlik çizgi sınırları buna oldukça yakındır, ancak tipik bir kod parçasının büyük kısmı genellikle en az bir veya iki seviyeye girintili olduğundan (girinti ayarlarına bağlı olarak 4 ila 16 karakter arasında anlamına gelir),

80 karakterlik çizgilere yapışmanın bir diğer etkisi de, işlerin ne zaman çok karmaşık olduğunun oldukça iyi bir göstergesidir. Uzun satırlara genellikle aşağıdakilerden biri neden olur:

  • Uzun bir argüman listesi olan fonksiyonlar; bu olması hoş bir şey değildir, çünkü okunabilirliği engeller ve kolayca hatalara neden olabilirler, örneğin insanlar argüman sırasını derleyicinin yakalayamayacağı bir şekilde değiştirdiğinde.
  • Genellikle koşullu olarak bulunan karmaşık ifadeler (örn. if ((user.isLoggedIn && user.hasPermission(page.getRequiredPermission()) && !user.isBanned) || page.getRequiredPermission() == null)); bunun da çözülmesi oldukça zordur ve kod daha yapılandırılmış bir şeye yeniden yazılmalıdır. Büyük olasılıkla, ifade çok fazla şey yapar ve bir yönteme veya işleve dahil edilmelidir.
  • İşlev çağrılarında veya ifadelerinde kullanılan uzun değişmez değerler, ör print(translate(LANG_EN, LANG_ES, "This is the home page. Feel welcome to click around and see what we have."));. Değişmezi bir değişkene veya sabite taşıyın; yine de satır uzunluğunu aşabilir, ancak tutarlı bir şekilde yaparsanız, okuyucu, sadece hazır bilginin geri kalanının takip ettiği varsayılarak, çizginin görünmez kısmını en azından güvenli bir şekilde göz ardı edebilir. Veya daha da iyisi, değişmezleri kodun dışına ve bir dış veri deposuna (dosya, veritabanı, her neyse) taşıyın.
  • Derin iç içe ifadeler, örneğin ifbir sınıf yöntemindeki altı deyim düzeyi ( tipik ayarlar için 32 girinti sütunu). Yine, derin yuvalama karmaşık ve okunması zor kod oluşturur ve veba gibi kaçınılmalıdır - basitçe, derin yuvalama okuma sırasında insan beyninin yığınını taşar.

Tüm bunlar sonuçta uzun vadede kod tabanınızda olmasını istemediğiniz şeylerin belirtileridir ve 80 karakter sınırlarını zorlamak, karmaşıklığı düşük ve okunabilirliği korumanıza yardımcı olan güzel ve basit bir yoldur. (Bu, 80 sütuna mükemmel okunamayan kod yazamayacağınız anlamına gelmez: çeşitli gizli-şey-kod yarışmaları açık bir karşı örnektir).


1
+1: Harfleri koddan uzaklaştırmaya katılmıyorum dışında harika bir yanıt. Hangi değişmezi aradığınızı bildiğinizde, kaynaklarda veya kodda eşit derecede iyi olabilir, ancak kodla çalışırken ve değişmezi değiştirmeniz gerektiğinde, ayrı bir dosyada avlanmak zorunda kalmak oldukça dikkat dağıtıcıdır. Ayrıca, tüm dillerin değişmez değerleri birden çok satıra bölmenin bir yolu olduğunu unutmayın, bu durumda yapacağım şey budur.
Jan Hudec

Elbette uzun edebi örnek olarak kullanılan cümlenin kaynak kodunda yaşayan bir yeri yoktur. Bunun gibi şeyler sayfa şablonlarında gider. Ancak hata mesajları gibi şeyler için onları yayan kodla tutmayı tercih ederim.
Jan Hudec

@JanHudec: Değişmez değerleri bir veri dosyasına taşımak her zaman mantıklı değil. Gerçi aşırı uzun değişmez bilgilerden bahsediyorum ve bunlarla, nadiren onları başka bir yerde tanımlamanın kodu daha da kötüleştireceği bir durum gördüm: metnin uzunluğu okumak için yıkıcı, bunun anlamı kolayca olabilir daha sonra başka bir yerde tanımladığınız sabit veya değişken bir isme dönüştürülür. Hata mesajları bir yargılama çağrısıdır sanırım.
tdammers

16

Açıklayıcı adlandırma FAR'a göre daha önemlidir. Çoğu arayüzde daha uzun çizgiler görmek için kaydırılabilir. Hiçbir durumda sistem, kötü adlandırılmış değişkenleri ve işlevleri çevirmenize yardımcı olamaz.


2
Bu. X karakterlerindeki satırları kesmeyi bırakın, IDE'nin bunu halletmesine izin verin. Ayrıca, ekranlar / IDE'ler olan 2 * X karakterleri artık bir sayfaya sığmayan kodla işleyebilen diğer tüm kullanıcıları (gelecekteki siz de dahil!) Rahatsız edersiniz.
Konerak

4
Soru örtük olarak uzun isimlerle ilgiliydi . Ve isimlerin uzun olması gerektiğine katılmıyorum - çoğu zaman kısa olmalılar . Açıklayıcı, uzun adlar, kodu daha az açıklayıcı ancak daha kısa adlardan daha zor okunur! (Aşırı uzun satırların okunması genellikle zordur.)
Konrad Rudolph

4
Katılmıyorum. Kodu bir kerede göremezsem, isimler ne kadar açıklayıcı olursa olsun okumak zor.
Jan Hudec

4

Satır başına 80 karakter, adlandırma uzun olsa bile zor değildir, çünkü uzun kodun tek bir satırını birden fazla kısa koda bölmenin birçok yolu vardır, örneğin, 40'tan az sığacak şekilde C'deki bir koşul ifadesini birden çok satıra bölebilirim karakterler,

if ( a == b || c == d  || d == e
    || c == e || c == a || c == k
    || c == l)

işlev çağrısını da birden çok satıra bölebilirsiniz.

Bu nedenle, hem tanımlayıcı adlandırma kurallarının hem de 80 karakter satırının çelişkisi yoktur, okunabilirliği artırmak için bir arada bulunabilirler.


2
80 karakter okunabilirliği gerçekten artırıyor mu? Hangi ekran bugünlerde 120'yi kolayca yapamıyor?
Billy ONeal

7
@BillyONeal 80 genişlikten 120 genişlikten daha fazla tarama yapmak daha kolay
cırcır ucube

2
haber kağıdı sütunlara ayrılır ve ux ux.stackexchange.com/questions/3618/…
neo

1
Bir mantık koşulunun kesilmesi, satır kesmeleri durumun yapısına karşılık geldiğinde okunabilirliği artırır, ancak yalnızca bir miktar keyfi sınıra karşılık gelmeleri gerekmez.
mikołak

1
@BillyONeal: çoğu ekran 120, ancak neredeyse 240 yapamaz. Yoksa farkları hiç karşılaştırmaz mısınız?
Hubert Kario

0

80 sınırı, uzun zaman önce arttırılması gereken bir şeydir. Bu sınırlamanın, her tanımlayıcının uzunluğunun 8 karakterle sınırlı olduğu ve ekranda / yazıcıda yalnızca bir yazı tipiyle yaşlandığından beri kullanıldığını unutmayın. Yazı tipi boyutunu değiştirme imkanı yoktur.

Tanrım, şimdi farklı ekran ve baskı teknolojimiz var. Çok farklı programlama dilleri var. Artık 80 karakter kullanmak için bir neden yok. En az 120 karaktere çıkar.

O zaman bile zor bir sınır olmamalı. Satırdan bir karakter mi gidiyorsun? Hiçbir şey olmuyor!

Düzenle:

80 karakterlik limit tarihi hakkında detaylı cevaplar

Wikipedia'da Satır Başına Karakter

Wichita Eyalet Üniversitesi'nde yapılan bir araştırma, CPL'nin okunabilirlik üzerinde sadece hız ve kavrama faktörleri de dahil olmak üzere sadece küçük etkileri olduğunu buldu. Bununla birlikte, tercih istendiğinde, katılımcıların% 60'ı, çalışmada kullanılan en kısa (35 CPL) veya en uzun (95 CPL) hatlar için bir tercih belirtmiştir. Aynı zamanda, katılımcıların% 100'ü bu miktarlardan birini en az arzu edilen olarak seçmiştir.


4
Hayır, limit kesinlikle artırılmamalıdır. Ekran ve baskı teknolojisi ile hiçbir ilgisi olmadığından, sadece satır başına 80 karakterin maksimum insan gözüyle ilgili olması rahatça tarayabilir (66 karakter optimum satır genişliği olarak kabul edilir, çok sütunlu baskıda daha azdır). Bu arada, çoğu kitabın kod örnekleri için 80 sütundan biraz daha az olduğu anlamına gelir.
Jan Hudec

3
@JanHudec Ekran / baskı teknolojisi ile her şeye sahiptir. Programcılar.stackexchange.com/ questions/ 148677/… . 80 karakterle gitme kararı, çalışmalara dayanmaksızın tamamen tarihseldir. Fikrinizi doğrulamak için lütfen çalışmalara bağlantılar ekleyebilir misiniz?
Sulthan

Başka bir soru zaten bu UX bağlantısını yorumlarında var; daha fazla referans var. 80 sayısının kendisi tarihsel tesadüf olsa da, kabaca daktilolar üzerinde satır başına grev sayısından türetilmiştir, bu da kabaca tek sütunlu baskının ortak genişliğinden türetilmiştir ve bunun için 66 harfli ortalama bir gelenek olmuştur.
Jan Hudec
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.