Adlandırma kuralları: camelCase vs. underscore_case? bu konudaki düşünceleriniz neler? [kapalı]


70

2 yıldan beri undercore_case kullanıyorum ve yakın zamanda yeni iş nedeniyle camelCase'e geçtim (sonrakini yaklaşık 2 aydır kullanıyordum ve yine de undercore_case'in dahil olan birçok programcının bulunduğu büyük projeler için daha uygun olduğunu düşünüyorum.) temelde kodun okunması daha kolay olduğu için).

Artık işteki herkes camelCase kullanıyor çünkü kod diyor ki daha şık görünüyor.

CamelCase veya underscore_case hakkındaki düşüncelerin neler?

ps lütfen benim kötü ingilizce pardon

Düzenle

Önce bazı güncellemeler:

  • Kullanılan platform PHP'dir (ama PHP platformuyla ilgili katı cevaplar beklemiyorum, herkes en iyi kullanımı için düşüncelerini paylaşabilir, bu yüzden ilk başta buraya geldim)

  • CamelCase'i tıpkı ekipteki diğer herkes gibi kullanıyorum (çoğunuzun önerdiği gibi)

  • camelCase'i de öneren Zend Framework kullanıyoruz

Bazı örnekler (PHP ile ilgili):

  • Codeigniter çerçevesi, undercore_case'i önerir ve dürüst olmak gerekirse, kodun okunması daha kolaydır.

  • ZF, camelCase'i önerir ve ZF kodunu takip etmenin biraz zor olduğunu düşünen tek kişi ben değilim.

Yani benim sorum tekrar ifade edildi:

Adlandırma kurallarını tavsiye etmeyen ve Foo'nun seçim yapması gereken bir platform olan Foo platformuna sahip olduğunuzu düşünelim. Sen o takım liderisin, neden camelCase'i seçtin ya da neden underscore_case?

ps şimdiye kadar hızlı cevaplar için herkese teşekkürler


6
"dürüst olmak gerekirse kodu okumak daha kolay" Görüş ya da gerçek?
JD Isa,

9
IThinkTheyAreBothAboutTheSame but_i_think_mixing_them_is_pretty_bad.
dietbuddha

7
@dietbuddha: 'but_i_think_mixing_them_is_pretty_bad' 'IThinkTheyAreBothAboutTheSame' den çok daha hızlı okudum. Bunun bilimsel olarak kanıtlanabileceğinden eminim. :)
Steven Jeuris,

@John Isaacks: (Küçük harfli bir destekçi olarak) rapor ettiğim için üzgünüm, bir çalışmada “deve kasasının eğitimden bağımsız olarak tüm denekler arasında daha yüksek hassasiyete yol açtığı” sonucuna varıldı .
Steven Jeuris

IWonderWhetherReadingEnglishWrittenInOneStyleVersusAnotherMakesMuchDifference. InTheEnd, IFindThatNeitherIsVeryGoodAtBeingEasyToRead. It_screws_horribly_with_line_length_and_makes_even_the_simplest_thing_complicated. I_wonder_whether_there_would_be_language_support_in_the_future_for_quoted_variable_names. "Bu benim görüşüme göre ya camelCase ya da underscore_separators'dan çok daha anlamlı olurdu".
Christopher Mahan

Yanıtlar:


84

Bir dereceye kadar kullandığınız dile bağlı olduğunu kabul ediyorum; Kodunuz, sembol isimleriniz dilin yapıları ve stok kütüphaneleriyle aynı formatı takip ettiğinde daha düzenli görünmeye meyillidir.

Ancak bir seçimin olduğu yerde, basit bir nedenden ötürü deve davasının altını çizmeyi tercih ediyorum: Bu stili okumayı daha kolay buluyorum. İşte bir örnek: Hangisini daha okunaklı buluyorsun? Bu:

aRatherLongSymbolName

veya bu:

a_rather_long_symbol_name

Alt çizgi sürümünü okumak daha kolay buluyorum. Beynim o sınırları zıt davanın diğer gliflere benzer gliflerine veya sayı arasında (özellikle nerede, deve durumda Büyük / küçük sınırlarını algılayabilir çok daha kolay alt çizgi yok sayabilirsiniz I/l, O/0, t/I, vs). Örneğin, bu boolean değişkeni, bir Igloo'nun uygun planlama izniyle inşa edilip edilmediğini belirten bir değeri saklar (şüphesiz hepimiz için ortak bir kullanım durumu):

isIllicitIgloo

Bu sürümü okuması çok daha kolay buluyorum :

is_illicit_igloo

Belki de okunması zor bir sembol adından bile daha kötüsü yanlış okunması kolay bir sembol adıdır. İyi sembol isimleri kendiliğinden belgelenir, bu da benim için onları bir bakışta okumanız ve anlamlarını anlamanız gerektiği anlamına gelir. (Eminim hepimiz yatakta kod çıktısını zevk almak için okuduğumuza eminim, ama bazen acele çekiyoruz.) Sık sık deve sembolü sembol isimleriyle onları yanlış okumayı ve yanlış bir izlenim elde etmeyi kolay buluyorum. sembolün anlambilimi.


25
Alt çizgi ile bir sorun: kullanılabilirlik. Çoğu (avrupa) klavyede, alt çizgi işaretini yazmak, SHIFT tuşunu basılı tutmayı gerektirir. Bunu camelCase için de yapmanız gerekiyor, ancak Pinky ile ÜSTKRKT tuşunu rahatça basılı tutabilir ve herhangi bir harf yazabilirim - ancak alt çizgi tuşu ÜSTKRKT tuşunun hemen yanında olduğundan, her ikisine aynı anda basmak oldukça garip yazım akışı.
LearnCocos2D

11
Birincisi, aslında CamelCase'in okunmasını daha kolay buldum - ikincisi açıkçası farklı olsa da.
Phoshi

19
Bu gerçekten alıştığınız şeye bağlıdır. CamelCases'ı ToRead'den daha kolay buluyorum ve ayrıca eşdeğer alt çizgi adlarından daha kısalar.
Joonas Pulakka

17
Ben nefret çizgi yazarak.
EpsilonVector

6
“Kullanılabilirlik” noktası bunun için önemli değil. Kod genellikle sadece bir kez bir kişi tarafından yazılır, ancak diyelim ki bazı kurgu ve potansiyel çift programlama için 1-10 kez sırayla yazalım. Ancak kod tipik olarak bir veya potansiyel olarak birçok kişi tarafından düzine / yüzlerce / binlerce kez okunur. Bu nedenle kodun okunmasını kolaylaştırmak, kodun yazılması kolay olmaktan çok daha büyüktür.
Hlovdal

97

Platformunuz tarafından kabul edilen adlandırma kurallarını kullanmanız gerektiğini düşünüyorum. underscore_case C # kodunda tuhaf görünecek, Ruby'de camelCase =)


23
Tutarlılık bir anahtardır. Yerel sözleşmeyle aynı fikirde olup olmadığınız, tutarlı olarak kendi zamanınızı kolaylaştıracak (ve diğer herkesin). (Yerel konvansiyonun kendisi tutarsızlık olmadığı sürece.) Ayrıca, okunabilirlik çoğunlukla yanlış bir argümandır: okunamayacağına karar vermediğiniz sürece, fark edeceğiniz herhangi bir kodu, çok az fark olduğunu keşfedebilirsiniz.
Richard,

1
Tamamen katılıyorum. Ben sadece özel platform yerine platform kurallarını kullanmanın daha iyi olacağını düşünüyorum, çünkü örneğin takımdaki yeni çocuklar kendisiyle daha rahat hissedecekler.
Alexey Anufriyev

2
Ancak, iki platformda çalışan ve bazılarının diğerini tercih ettiği iki sözleşmeyle çalışanlarımıza acıyın!
Michael K

Platformun 2 sözleşmesi varsa, tüm ekip üyelerinden kongre için oy kullanmasını isterim =)
Alexey Anufriyev

20

Dürüst olmak gerekirse, takımdaki herkes aynı programı kullandığı sürece farketmez. Şanslar bir veya diğeri sizin için daha doğal olsa da, asıl önem, uzun vadede kodun okunabilirliğidir ve daha sonra herkesin aynı adlandırma kurallarına uyması çok önemlidir.


Tamamen haklısın, ancak insanların cadı hakkındaki görüşlerini kullanmanın daha iyi olacağını öğrenmeye çalışıyorum (diyelim tüm ekip için diyelim) ve neden ... bazı insanların sadece bazı sözleşmelere alışkın olabileceğini anlıyorum. diğerleri diğeriyle daha doğal olarak ilgileniyor.
poelinca

20

John Isaacks'in cevabına göre:

"dürüst olmak gerekirse kodu okumak daha kolay" Görüş ya da gerçek?

Biraz araştırma yapmaya karar verdim ve bu yazıyı buldum . Bilim bu konuda ne söyleyecek?

  1. Deve kasası, alt çizgilerden daha büyük bir doğruluk olasılığına sahiptir . (oranlar% 51,5 daha yüksek)
  2. Ortalama olarak, deve vakası % 13,5 daha uzun olan 0,42 saniye sürdü .
  3. Eğitimin, stilin doğruluğu nasıl etkilediği üzerinde istatistiksel olarak anlamlı bir etkisi yoktur.
  4. Daha fazla eğitim görenler deve davası tarzındaki tanımlayıcılar üzerinde daha hızlı davrandılar .
  5. Bir stildeki antrenman, diğer stildeki bulma süresini olumsuz yönde etkiler .

Konuyla ilgili blog yazımda , bilimsel makaleyi inceliyorum ve aşağıdaki sonucu çıkardım.

Sadece deve kasasının yavaşlığı (2) programlama ile gerçekten ilgilidir, diğer ID'ler modern IDE'ler ve araştırmadaki camelCase kullanıcılarının çoğunluğu nedeniyle ilgisiz olduğu için reddetmektedir. Tartışma (anket ile birlikte) blog yazısında bulunabilir.

Bu makalenin fikirlerini nasıl değiştirebileceğini merak ediyorum. :)


3
Tabii ki, diğer tüm noktaları alt çizgi tercihiniz nedeniyle reddedersiniz ve diğer noktalar
davanıza

2
@Charles: Evet ve hayır, IMHO Neden onların kovulmadıklarına dair iyi argümanlar yapıyorum ve hatta bazıları makalenin kendisi tarafından sorunlu olarak tartışılıyor. Bir takip makalesi , bu makalenin bazı problemlerini araştırıyor ve sonuçlar ön plana çıktı.
Steven Jeuris

11

En Zeki Çocukları Kopyala

Programlama dilleri durumunda, dilin geliştiricisinin stilini kopyalayın.

Örneğin, K&R'de yapıldığı gibi C kodunu tam olarak yazdım.

Sonra, herhangi biri sıkıcı bir kodlama tarzı sohbete başlamaya çalıştığında, onlara "Dennis Ritche'le bunu getirmelerini ve ne söylediğini bildirmelerini" söyleyebilirim.


12
Orijinal her zaman en iyisi değildir. K&R müjdesi kitabında C ile ilgili birçok kötü uygulama var. Bu bir alev savaşı başlamadan önce ... bazı MISRA tavsiyelerini okudum.
Çabucak_

10
Unutma, K&R GUI-IDE yokken yazılmıştır. Çoğu çalışma 80x25 karakter terminalinde yapıldı, bu yüzden ekran alanı birinci sınıftaydı, if (...) {bir çizgi kaydedildi! Bugünlerde daha fazla ekran alanı var - bugün hi-res GUI IDE'leri ve çoklu monitör kurulumları ile yazılmışsa K & R farklı olur mu?
Skizz,

3
Evet, ama birileri K & R gibi C kodu koyduğunu söylediğinde, eski okul olduğu için destek alıyorlar.
Christopher Mahan

3
@quickly_now, bunu Dennis Ritchie ile getir ve söylediklerini bana bildir!
Mark Harrison

MS’ten çok fazla biçimlendirme alıyorum: _internalToClassOnly, erişilebilirByGetter, PublicVariable.
IAbstract

10

Genel olarak camelCase'i tercih ederim. Ancak bunun nedeni kariyerimin çoğunun, stil kılavuzlarının normalde camelCase'i önerdiği diller ve ortamlarda çalışıyorum. (Java, ECMAScript, C ++). Siz, bir PHP insanı olmanızın tersini tercih etmeniz olasıdır.

Bununla birlikte, üçOrFourWords'ün ötesine geçtiğinizde ya da XmlForExample gibi ilkleri kullanıyorsanız, okunabilirliği durduğunu söyledi.

Bu yüzden emacs bize gözlük kipi veriyor.


2
Gözlük modunu keşfetmemi sağladığı için +1! Ben sadece camelCase kullanan bir kod dosyasında test ettim ve hemen nasıl daha iyi görünmeye başladığını fark ettim (camelCase'deki etiketlerin bir araya getirilmesiyle).
Gauthier

Tamam, gözlük modu nedir?
Marcie


8

camelCase

Bu, her zaman okunabilirlik üzerine 'tür kabiliyeti' seçeceğim yerlerden biri. CamelCase'in yazılması daha kolay ve parmaklarıma daha nazik davranmak benim için hafif bir okunabilirlik kazancı kazanıyor.

Elbette, projenin farklı bir standartta mevcut bir kod temeli üzerine inşa etmediği varsayılmaktadır.


Buna katılmıyorum, sadece bir kere kod yazıyorsunuz, fakat daha sonra defalarca okumak zorundasınız
Roman Pekar

7

Bu ilginç bir soru, bunu defalarca düşündüm. Ama kesin bir cevap yok sanırım.

"Kültürel" sözleşmelerin ardından iyi bir seçimdir. Bu durumda “kültürel” ekip / şirkette kurulan sözleşmeler anlamına gelir ve temel olarak dil / platform sözleşmelerini de taşırlar. Başkalarının kodunuzu kolayca okumasına / kullanmasına yardımcı olur ve kodunuzu anlama yolunda ek çaba ve zaman gerektirmez.

Bazen kabul edilen gösterimleri kırmak ilginçtir. Küçük projelerimden biri (Python'da) underscored_namesfaydalı işlevler / "korumalı" yöntemler ve Java tarzı methodNamesyöntemler için kullandım. Ekibim onunla mutlu oldu :)


6

Programlama diline göre değişir.

Macar gösterimini kullanıp kullanmama konusunda aynı teknede kullanmayı düşünüyorum:

  • Python: underscore_case, Macarca notasyonu yok
  • C ++: camelCase, Macarca notasyonu

8
@Kevin Cantu: Aslında Javascript ismi camelCase yerine PascalCase'de ...
Guffa

1
@Guffa: touché!
Kevin Cantu

2
@Kevin Cantu: JavaScript'te: XMLHttpRequest<- Bu addan tutkuyla nefret ediyorum.
Thanatos

1
hipotetikReasonsToNukeRedmond.push (XMLHttpRequest)
Kevin Cantu

4
@ Lionel: Aslında Macarca notasyonu neredeyse hiç C ++ 'da kullanılmaz, çünkü C ++ zaten türlerinizi kontrol eder. Her şeyden daha çok tarihi bir eserdir.
silico'da

6

Her ikisi de!

Ben CakePHP'de gelişme çok şey ve ben de kullanabilir CamelCaseveya $underscored_varsaşağıdaki moda (hatta CakePHP'nin Projeleri dışında) içinde,:

  1. dosya adları - /lowercased_underscored.phpTipik, ancak bahsedilmeye değer.
  2. sınıflar - class CamelCase extends ParentObject. Kullanırken CamelCase, ilk karakterin küçük harf olmadığını unutmayın. Ben bulmak camelCasebakmak gerçekten garip.
  3. değişkenler -$are_variables_underscored === TRUE;
  4. örnekleri tutan değişkenler -$CamelCase = new CamelCase();
  5. dizi tuşları -$collection['underscored_keys'];
  6. Sabitler - Bence herkes sabitlerin olması gerektiği konusunda hemfikir olabilir ALL_CAPS_AND_UNDERSCORED.
  7. yöntemler -$CamelCase->foo_method_underscored();
  8. statik yöntemler -CamelCase::just_like_regular_methods();

3
Seninle aynı fikirdeyim, ilk karakterin küçük harf olması beni deli ediyor! CamelCase'den bir tutkuyla nefret ediyorum.
HLGEM

Adların tipik olarak camelCased olduğu Java'da, sınıf adları gerçekte Büyük harfle başlar. Bu onları yöntem isimlerinden ayırt etmektir.
James P.

5

Kişisel olarak tercih ediyorum underscore_caseçünkü daha okunaklı buluyorum, ancak mevcut kod temeli ile tutarlılığın çok daha önemli olduğunu belirten diğer cevaplayıcılarla aynı fikirdeyim.

Ancak, "dilinizin ve kütüphanelerinin kurallarına uyun" diyenlere karşı bir örnek var.

Geçmişte Windows kullanarak C kodunu yazdık underscore_caseve PascalCaseWin32 işlevlerini çağırdık :

if (one_of_our_conditions_is_true())
{
    call_one_of_our_functions();
    CallSystemFunction();
}

İşlev isimlerimizle Microsoft'un işlev isimleri arasındaki görsel ayrım, kodun "sistem ülkesi" ne zaman girdiğini açıkça gösterdiği gibi bir engelden ziyade bir yardımdı.

Ek olarak, editörümün sözdizimini vurgulama kurallarını farklı renklerle gösterecek şekilde değiştirebildim, bu da kodun bilinmeyen bölümlerini (hatta kendi bölümümü) anlamaya çalışırken daha fazla görsel ipucu verdi.


5

Gerçekten Dylan'ın normal-normal-çizgi-onlar-için-kolay-türü-ve-kolay-okumak için seviyorum.

Sevmek

result-code := write-buffer(file-stream, some-string)

Ama bu dil oldukça belirsiz olduğu için sanırım bu konu dışı ... :(


3
Ayrıca alt çizgi yazmak için vardiya basmaktan yoruldum.
Gauthier

8
Bu genellikle değişken isimleri için mümkün değildir, çünkü "-" genellikle eksi anlamına gelir.
Eric Wilson

4

CamelCase'i üniversitede kullanmam öğretildi. Son birkaç yılda birkaç farklı kongre kullandım, ancak CamelCase'i başka herhangi bir şey için tercih ettim. CamelCase'in aslında okuması ve anlaması en kolay olduğu bir yerde okuduğumu hatırlıyorum.


4
Bir yerde okuduğunuz için kolay değil, çünkü ilk çalıştığınız kişi daha kolay, çünkü daha çok alışkın olduğunuz için, örneğin undercore_case ile daha rahatım.
poelinca

1
okuduğum gibi bir çalışma yapılmış ve daha iyi olduğunu
Ross

4

Çoğu insanın söylediği gibi - Mevcut standartı kullanın. Yeni bir proje ise, kullanacağınız dil ve çerçeveler için standardı kullanın.

Ve kafanız karışmasın, bu okunabilirlikle ilgili değil (özneldir), tutarlı ve profesyonel olmakla ilgilidir. Çok sayıda 'standart' olan bir kod tabanında çalışan herkes bunu anlayacaktır.


4

Bazen bir karışım kullanıyorum: module_FunctionName. Modüllerimdeki tüm (statik olmayan) işlevler, bir modül kısaltmasıyla başlar.

Örneğin, I2C veriyolunda arabellek içeriğini gönderme işlevi:

i2c_BufferSend()

Alternatif i2c_buffer_send, önek ile işlev adı arasında yeterince büyük bir ayrım göstermez. i2cBufferSendönek içinde çok fazla karışım var (bu modülde oldukça fazla sayıda I2C işlevi var).

i2c_Buffer_send Yine de bir alternatif olabilirdi.

Cevabım, projeniz için neyin en iyi şekilde işe yaradığına (diliniz, SW mimariniz, ...) adapte olmanız ve bu tarzları karıştırmanın yararlı olabileceğini belirtmek istedim.

myGeneralOpinionIsThatNamesAreMuchHarderToReadInCamelCase. I_respect_the_fact_that_some_could_think_otherwise_but_I_do_not_really_understand_why.


1
Son 2 satır için +1, ancak adlandırma kurallarını birleştirmenizi önermiyorum, bunlardan birine veya diğerine yapışmalısınız.
poelinca

Kongre iyi tanımlandığı sürece (önek + alt çizgi + PascalCase) ...
Gauthier

Semantik olarak ayrık amaçları olan bir ismin bölümlerini ayırmak için alt çizgi kullanmayı seviyorum, özellikle de her iki taraftaki ortaklığı önemliyse. Örneğin, rutinler Motor1_Start(), Motor2_Start(), Motor1_Stop()ve Motor2_Stop()alt çizgi olmadan daha az belirgin olabilir bir ilişki var.
supercat

4

Şahsen ben camelCase'i tercih ederim, ancak bazı fontlarda alt çizgi okunmasının daha kolay olduğunu düşünüyorum.

Değişken kümelerini ayırt etmek için ön ekler kullanmanız gerekirse, ad alanlarını veya nesneleri veya bu bilgileri saklamak için bir şey yapmanıza izin veren bir dil kullanmanız gerektiğini öneririm.

myName   = 7
bobsName = 8   // :(

me.name  = 7
bob.name = 8   // :D

Aynı şekilde, türleri ayırt etmeniz gerekiyorsa, neden onlara izin veren bir dil kullanmıyorsunuz?

var intThingy = 7; // :(

int thingy = 7;    // :)

Düzgün bir şekilde sahip olduğunuzda ve sadece meta-veri olarak ismi kullanmıyorsanız, o zaman fazladan tuşa basıp basmamayı tercih edip etmemenizin çok önemli olduğu yeterince uzun isimleriniz olmaz.


1
CamelCase veya underscore_case kullanımının nedenlerinden biri, ne olduğunu ayırt etmek için nesne tanımını bulmama gerek olmamasıdır.
Joshua Shane Liberman

2

İlk başta dafmetal ile aynı fikirdeyim. Farklı programlama stillerini karıştırmamanız çok önemlidir. Bunu bir ve aynı dosyada yapmak IMHO'yu yapabileceğiniz en kötü şeydir. Farklı dosyalar arasında dikkat dağıtıcı, ancak ölümcül değil.

Yapmanız gereken bir sonraki şey, yazdığınız dil için popüler olan kuralları isimlendirmek. E-posta benim C ++ kodum, Python için açıkça farklı görünecek (PEP8 burada güzel bir rehberdir)

Farklı şeyleri belirtmek için farklı adlandırma kuralları da kullanabilirsiniz; sabitler için muhtemelen UPPER_CASE kullanıyorsanız (bu yalnızca elbette belirli diller için geçerlidir), this_style özelliğini yerel değişken adları için kullanabilirsiniz, oysa camelCase örneğini / üyesini kullanabilirsiniz değişkenler. Aşağıdaki gibi şeyler varken bu gerekli olmayabilir selfveya thisancak.

Güncelleme

Foo cadı platformunun isimlendirme kurallarını tavsiye etmediği ve takım liderinin seçeceği bir platform olduğu bir dava ele alalım. Siz o takım liderisiniz, neden camelCase'i seçtiniz veya neden undercore_case.

Biri diğerine göre hiçbir avantajı yok. Bu konu çok öznel ve bir zamanlar üzerinde anlaşmaya varıldığında, bir fark yaratmayacak. Bu küçük şeylerle ilgili her zaman bu dini savaşlar vardır. Ancak ikisinden birine adapte olduktan sonra, tartışmalar tamamen gereksiz görünüyor.

Alex Martelli'ye çok benzer bir konuda alıntı yapmak için:

Elbette, Ruby'de, her bloğun sonuna saçma bir "son" yazmaktan (sadece belirsiz değil) yazmaktan bıktım - ama sonra eşit olarak saçma ':' yazarak Python'un istediği gibi yazmaktan kaçınıyorum. başlangıç neredeyse yüzden her bloğun, bir yıkama :-). '@Foo' ile 'self.foo' ya da Ruby ile Python'daki durumun daha yüksek önemi gibi diğer sözdizimi farklılıkları da aslında benim için anlamsız.

Diğerleri hiç şüphesiz, programlama dillerini bu tür meselelere dayandırırlar ve en sıcak tartışmaları yaratırlar - ama bana göre bu, yürürlükte olan Parkinson Yasalarından sadece bir tanesidir ( bir konuyla ilgili tartışma miktarı, konuyla ters orantılıdır). gerçek önem ).

Kaynak

Takım lideri iseniz, sadece bir taneyle gidersiniz. Birinin diğerine göre bir avantajı olmadığından, sadece zar atıp istediğini seçebilirsin.


2

Birkaç yıl önce, İngilizce'yi ilk dil olarak konuşmayan programcıların, bu deve olayını anlamada altını çizme vakalarını daha kolay bulma eğiliminde olduğunu, ancak referansı bulamadığımı ve bunun doğru olup olmadığına dair hiçbir fikrim olmadığını okudum.


2

Java, Python, C ++ gibi kullandığım programlama dilleri için açık bir format kullandım:

  • ClassNamesArePascalCase
  • methodNamesAreCamalCase
  • variable_names_are_underscore
  • CONSTANT_VARIABLES_ARE_CAPITAL_VARIABLES

Bu, uğraştığım şeyi hemen ayırt etmeme izin veriyor. Kendim için sağlamanın yararlı olacağını ve kod okuyan bir başkası için izlemesi kolay olacağını buldum. Diğerlerinin de belirttiği gibi tutarlılığın en önemli olduğunu düşünüyorum. Bu yüzden, biçimimi korumak için yeterince basit ve isimler arasında net ayrımlar buluyorum. İnterface_Names_Are_Like_This ve Abstract_Classes_Are_Like_This arayüzünü olası uzantılar olarak hayal edebiliyorum, ama takip etmesi daha karmaşık görünüyor ve belki de yapması gereken bir ayrım gibi görünmüyor.

Ayrıca, PascalPase'de HTMLParser ya da HTMLparser yerine HtmlParser olarak HTML ayrıştırıcı gibi şeyleri adlandırmayı ve isim vermeyi faydalı buldum. Çünkü katı kuralı hatırlamanın daha kolay olduğuna ve kelime sınırlarını daha açık tuttuğuna inanıyorum (maalesef HTML veya SQL gibi yanlış yazım gerektiren şeyler). Benzer şekilde camelCase ile HTMLParserMethod veya HTMLparserMethod yerine htmlParserMethod.

GÜNCELLEME :

O zamandan beri özel değişkenleri içermek için bu kuralları genişletmede kullanım buldum. - _private_variable_names_are_prefixed_with_an_underscore - _PRIVATE_CONSTANT_VARIABLES_ARE_PREFIXED_WITH_AN_UNDERSCORE

Java'da bu, özel alanların tanım gereği yerel değişkenlerden farklı bir ad alanında olduğu anlamına gelir; bu this., özel alanları atlayabileceğiniz anlamına gelir . Ön eki " m" ile gördüm , ancak bu biçimler değişken adları için camelCase'i de kullanır. Bu aynı zamanda bana sadece sınıfın tarafından dahili erişilen (ve yapım gereken alanlar arasında bir ayrım yapmak için izin verir süper sınıfının dışında oluyor zaman açık object._field_xgöze çarpıyor).


1

Bana kalsa, herhangi bir stilin kullanılmasını zorlamaz ya da ipucu vermemeliydim, çünkü programcılar olarak bir sembol okuyabilirdik: IfIsInCamelCase veya in_underscore_space veya hatta in_SomeOtherStyle. Sembolü ayrıştırmak için çok az zaman harcamak zorunda olmak, işlerin büyük düzeninde büyük bir yük oluşturmaz.

Şimdi, sanırım bir kongre için temel argüman, bir işlev / değişken adının biçiminin ne olduğunu önceden bilmek ve onu aramak zorunda olmamanız gerektiğidir - LoadXMLFile, loadXMLFile, LoadXmlFile, load_xml_file? Şimdi, bu iddiaya "İstihbarat tarzı otomatik tamamlamayı destekleyen bir IDE al!" Diyerek cevap verirdim. (her zaman mümkün olmasa da).

Sonunda, derleyici / tercüman için ne tarz kullandığınız gerçekten önemli değil. Önemli olan, ismin faydalı olması:

NumberOfPrisonersReleasedByAccident
manufacturer_name
distance_EarthToMoon

Üç farklı stil, ama her birinin ne yaptığını tam olarak biliyorsun.


1
Farklı olmak için yalvarıyorum, kaynağın görünümü önemlidir. Bkz. "Pragmatik programcı" nın kırık pencere teorisi. Değişen adlandırma kuralı görünümü daha da kötüleştirir. pragprog.com/the-pragmatic-programmer/extracts/software-entropy
Gauthier

1
@Gauthier: 'Kırık pencere' fikrine katılsam da, sembollerin büyük harflerinin 'kırılmış pencere' olduğunu düşünmüyorum. Mutlaka ortaya konan kod kesinlikle, ve şu anki projem kesinlikle yapabildiğimde toparlamaya çalıştığım bir çok şeye sahip.
Skizz,

Katılıyorum. Üçünü de eşit derecede iyi okuyabilirim. Önemli değil. Ben sadece dosya ne kullanıyorsa, o zaman dil ne önerirse (python) ve projenin en iyi şekilde hizmet edeceğini düşündüğüm şeyi kullanırım. (Eskiden gwbasic programlarım ve hepsi güzeldi - eski güzel günler!)
Christopher Mahan

0

Aptal görünebilir, ancak alt çizgi hoşuma gitmiyor, çünkü alt çizgi ince ve çok satırlı metinlerde gizleniyor ve özlüyorum. Ayrıca, bazı (birçok) metin editörlerinde ve / veya yazılım geliştirme ortamlarında, kopyalamak veya sürükleyip bırakmak üzere vurgulamak için bir belirteç adına çift tıkladığınızda, sistem tüm belirteçleri vurgulamaz, yalnızca bir kısmı vurgular belirteci, bitişik alt çizgiler arasında. Bu beni deli ediyor.


0

Gelişimimin çoğunu Eclipse'deki (Java, PHP ve JavaScript için) yaptığım aptalca bir sebepten dolayı camelCase'i tercih etme eğilimindeyim, ve kelimelerden Ctrl+ veya Ctrl+ ile yazdığımda aslında camelCase sınırlarında duruyor.

Yani: myIntVariableEclipse tarafından Ctrl+ işaretlendiğinde 3 kelime olarak ele alınacaktı ← →.

Garip bir tuhaflık olduğunu biliyorum, ancak ortadaki kelimeleri camelCase adında düzenlemeyi tercih ediyorum.

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.