Birisi bana C # 'ın kodlama konvansiyonu açıklayabilir misiniz?


14

Son zamanlarda Unity3D ile çalışmaya ve öncelikle C # ile komut yazmaya başladım. Normalde Java'da programladığım için, farklar çok büyük değil , ancak doğru yolda olduğumdan emin olmak için hala bir çökme kursuna başvurdum.

Bununla birlikte, C # ile en büyük merakım, yöntem adlarının ilk harfini büyük harflerle yazmasıdır (örn. Java: getPrime()C #: GetPrime()aka: Pascal Case?). Bunun için iyi bir neden var mı? Görünüşe göre .Net için bir kongre olduğunu okuduğum çarpışma ders sayfasından anlıyorum ve bunu değiştirmenin hiçbir yolu yok, ama normal (göreceli?) Deve davası yerine neden böyle yapıldığını duymak merak ediyorum yani Java kullanır.

Not: Dillerin kendi kodlama kurallarına sahip olduklarını anlıyorum (Python yöntemlerinin hepsi bu soruda da geçerli küçük harftir), ancak neden bir standarda resmileştirilmediğini gerçekten anlamadım.


18
Gerçekten bakabilirsiniz sanmıyorum camelCaseve PascalCaseve underscore_caseve bunlardan biri normal olduğunu (hatta nispeten normal) demek ve diğerleri. @Dasblinkenlight'ın dediği gibi, keyfi bir seçimdir. C # 'nin kurallarını alışılmadık bir şekilde düşünmenizi sağlayan tek şey, "normalde Java'da programladığınız" ve bu nedenle Java için yapılan rastgele seçime alışık olduğunuzdur.
Carson63000

Bunun yerine JavaScript kullanın .. için Unity3D :)
Lipis

@Lipis Neden - kişisel tat dışında? ;-)
ahodder

@AedonEtLIRA tamamen kişisel .. boş verin :) Hangi dilde olursa olsun Birliğin tadını çıkarın .. kullanarak bitireceksiniz ..
Lipis

@Lipis Şimdiye kadar harika. Tonlarca çan ve ıslık ve ben henüz parayı düşürmedim. Ama C # (c / c ++) ve java'nın yapılandırılmış stilini tercih ederim.
ahodder

Yanıtlar:


27

Adlandırma kuralları, yayıncılarının keyfi seçimlerini temsil eder. Dilde, yöntemlerinizi Java'da yaptığınız gibi adlandırmanızı yasaklayan hiçbir şey yoktur: ilk karakter bir harf / alt çizgi olduğu ve diğer tüm karakterler harf, rakam veya alt çizgi olduğu sürece, C # şikayet. Ancak, .NET ile birlikte gelen sınıf kitaplıkları, Microsoft'un dahili olarak benimsediği bir kuralı izler. Microsoft bu yönergeleri de yayınladı , böylece diğerleri de kendi sınıf kütüphaneleri için bunları benimsemeyi seçebilir. Microsoft'un yönergelerini izlemeniz veya yok saymanız tercihiniz olsa da, aynı adlandırma yönergelerini uygularsanız kodunuzu başkaları tarafından tanımanız daha hızlı olabilir.


Ancak genellikle bir sözleşmenin arkasında bir gerekçe vardır ve "Bunun için iyi bir neden var mı?" NEDEN NE OLMADI hakkında bir soru olarak anlıyorum.
greenoldman

Kamusal / dahili / statik üyeler için Pascal ve tüm yöntemler. Özel deve. Tarama sırasında bir belirtecin kapsamını ayırt etmeye yardımcı olur. thisAnahtar kelime aynı işi yapar. Stil seçenekleri, uzaylı görünmelerine rağmen pratiktir
Gusdor


4

Verilen diğer cevaplara ek olarak, yöntemler için deve davasına sahip olmak, özel üyelerin adlarıyla, adlandırmalarında deve davası kullanan parametreler ve yöntem değişkenleriyle çakışabilecekleri anlamına gelir. Java (ve C # 1.0) delege kullanımı garip ve nadir olduğu için bu çok yaygın değildir. Modern C # 'da tam olarak yaygın değil , aynı zamanda duyulmamış da değil.


1
Alt çizgi C # özel alanlarında kullanılmamalıdır (bkz. Blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx , örn.), Ancak tartışmalı ve sıklıkla bulunur.
Jens

1
dil yapıları arasında ayrım yapmak için kasaya güvenmek, dilin bunu yapmanıza izin verip vermemesine bakılmaksızın gerçekten kötü bir fikirdir.
gbjbaanb

4
@Telastyn bu ifade oldukça şok edici. .NET sınıfı kitaplığının çoğu bu kuralı kullanır.
MattDavey

1
@ Aniden benim sözleşmem nasıl oluyor ? Sadece bir yorum geçiyordum, bu konuda her iki şekilde de bir fikrim yok :)
MattDavey

2
@MarjanVenema: Ne hakkında konuştuğunuzdan emin değilsiniz ama C # büyük / küçük harfe duyarlıdır ve kesinlikle benzer üyeler arasında çarpışmalar yaşayabilirsiniz. Bu, kütüphane düzeyinde üzerinde çalıştığınız VB.NET gibi gerçek durum duyarsız diller olduğunda eğlenceli ve heyecan verici olur.
Wyatt Barnett
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.