ÖNEMLİ GÜNCELLEME (12 Nisan 2016):
NET CoreFX ekibinin dahili standardının, neden olduğuna dair herhangi bir fikir vermeden alt çizgi gösterimini kullanmakta ısrar ettiği dikkatimizi çekti . Biz kural 3. yakından bakmak Ancak eğer bir sistem olduğu ortaya çıkıyor _, t_, s_neden önerir öneklerle _ilk etapta seçildi.
- Biz kullanmak
_camelCaseiç ve özel alanlar için ve nerede salt okunur mümkün kullanın. Örnek alanları önek _, statik alanlar ile s_ve statik alanlar ile iş parçacığı t_. Statik alanlarda kullanıldığında, readonlysonra gelmelidir static(yani static readonlydeğil readonly static).
this.Kesinlikle gerekmedikçe kaçınırız .
Dolayısıyla , performans açısından kritik, çok iş parçacıklı, sistem düzeyinde kodlar üzerinde çalışan .NET CoreFX ekibi gibiyseniz , o zaman şunları yapmanız ŞİDDETLE ÖNERİLİR:
- kodlama standartlarına bağlı kalmak ve
- alt çizgi gösterimini kullanın ve
- bu cevabı daha fazla okumayın
Aksi takdirde lütfen okumaya devam edin ...
ORİJİNAL CEVAP:
Önce neden bahsettiğimiz konusunda anlaşalım. Sorun, görünürlük değiştiriciler izin veriyorsa, örnek üyelerine statik olmayan yöntemler ve bir sınıfın / alt sınıfların yapıcılarından nasıl erişeceğimizdir.
Underscore-notasyonu
- özel alanların adlarında "_" ön ekini kullanmanızı önerir
- ayrıca kesinlikle gerekli olmadıkça "bunu" kullanmamanız gerektiğini söylüyor
Bu gösterimde
- her zaman "bunu" kullanmanızı önerir. herhangi bir örnek üyesine erişmek için
Bu gösterim neden var?
Çünkü sen böyle
- aynı adı paylaştıklarında bir parametreyi bir alandan ayırmak
- mevcut örnek bağlamında çalıştığınızdan emin olun
Misal
public class Demo
{
private String name;
public Demo(String name) {
this.name = name;
}
}
Alt çizgi gösterimi neden var?
Bazı insanlar "bu" yazmayı sevmezler, ancak yine de bir alanı ve bir parametreyi ayırt etmek için bir yönteme ihtiyaç duyarlar, bu nedenle bir alanın önünde "_" kullanmayı kabul ettiler
Misal
public class Demo
{
private String _name;
public Demo(String name) {
_name = name;
}
}
Kişi bunun sadece kişisel zevk meselesi olduğunu ve her iki yolun da eşit derecede iyi / kötü olduğunu düşünebilir. Bununla birlikte, bu gösterimin alt çizgi gösterimini geçtiği bazı yönler vardır:
berraklık
- altçizgi notasyonu isimleri karıştırır
- this-notation isimleri olduğu gibi tutar
Bilişsel yük
Alt çizgi notasyonu tutarsızdır, alanları özel bir şekilde ele almanızı sağlar, ancak bir mülke veya bir alana ihtiyacınız olup olmadığını kendinize her sormanız gerektiğinde diğer üyelerle birlikte kullanamazsınız.
bu notasyon tutarlı, düşünmek zorunda değilsiniz, sadece herhangi bir üyeye atıfta bulunmak için her zaman "this" i kullanıyorsunuz
GÜNCELLEME: belirtildiği gibi aşağıdakiler bir avantaj noktası değildir
Bakım
Altçizgi notasyonu, _yeniden düzenleme yaparken göz kulak olmanızı gerektirir , örneğin bir alanı özelliğe dönüştürmek (kaldır _) veya tersini (ekle _)
bu notasyonun böyle bir sorunu yok
Otomatik tamamlama
Örnek üyelerinin listesini görmeniz gerektiğinde:
- Alt çizgi notasyonu size pek yardımcı olmaz, çünkü "_" yazdığınızda otomatik tamamlama açılır penceresi size özel alanları ve diğer örnek üyeleriyle karışık bağlantılı derlemelerde bulunan tüm türleri gösterir.
- Bu notasyon size net bir cevap verir, "bu" yazarak tüm gördüğünüz üye listesidir, başka hiçbir şey görmez
belirsizlik
Bazen Intellisense'in yardımı olmadan kodla uğraşmanız gerekir. Örneğin, kod incelemeleri yaptığınızda veya kaynak koda çevrimiçi olarak göz attığınızda.
Alt çizgi notasyonu belirsizdir: Something.SomethingElse'i gördüğünüzde, Something'in sınıf olup olmadığını ve SomethingElse'nin statik özelliği olup olmadığını söyleyemezsiniz ... ya da Something, SomethingElse'nin kendi özelliğine sahip geçerli bir örnek özelliğidir.
this-notation açıktır: Something.SomethingElse'i gördüğünüzde, yalnızca statik bir özelliği olan bir sınıf anlamına gelebilir ve bunu gördüğünüzde.Something.SomethingElse, Something'in bir üye ve SomethingElse'nin özelliği olduğunu bilirsiniz.
Uzatma yöntemleri
"This" kullanmadan örneğin kendisinde uzantı yöntemlerini kullanamazsınız.
- Alt çizgi gösterimi "this" kullanmamanızı gerektirir, ancak uzantı yöntemlerinde
- bu not sizi tereddüt etmekten kurtarır, her zaman "bu" noktasını kullanırsınız.
Visual Studio desteği
Resmi tavsiyeler
Özellikle C # 'da açıkça "alt çizgi kullanmayın" diyen birçok resmi yönerge vardır.