Adlandırma kuralı - C ++ ve C # değişkenlerinde alt çizgi


146

_varSınıf alanında değişken adı görmek yaygındır . Alt çizgi ne anlama geliyor? Tüm bu özel adlandırma kurallarına referans var mı?



17
Bazı yanlış yönlendirilmiş kurumsal kodlama yönergeleri, sınıf değişkenlerinin ve işlevlerin kaçınılmaz olarak o kadar şişirileceğine inanarak, değişkenlere yerel değişkenlerden ayırt etmek için siğiller eklemeyi önerir, bu gibi belirsiz ipuçları olmadan neyin ne olduğunu takip edemezsiniz. Bu tür sözleşmeleri öneren insanlar, çoğu zaman kodu kendilerine en çok ihtiyaç duyanlardır.
Mike Seymour

26
@Mike - Battaniye beyanınız doğru değil. Bu kuralı kullanmanın yöntemleri hızlı bir şekilde taramanın ve sınıfı iyi anlamanın çok daha kolay olduğunu buldum.
ChaosPandion

12
@ChaosPandion: o zaman bunu battaniye bir ifade olarak okumayın. "Bazıları", "tümü" anlamına gelmez ve "çoğu zaman", "her zaman" anlamına gelmez ve belki de deneyimlerimin bir istisnasıdır.
Mike Seymour

17
C ++, önlemek gelen çizgi. Birçok bağlamda (yani, küresel kapsamda, büyük harf izlediğinde vb.) Bunlar uygulama için ayrılmıştır ve aslında üzerlerinde makro ezme riskiyle karşı karşıya kalırsınız. Eğer onları istiyorsanız, onları alt çizgi yapmak .
sbi

Yanıtlar:


120

Alt çizgi basitçe bir kongre; başka bir şey değil. Bu nedenle, kullanımı her insan için her zaman biraz farklıdır. Söz konusu iki dil için bunları şu şekilde anlıyorum:

C ++ 'da, alt çizgi genellikle özel üye değişkenini belirtir.

C #, genellikle sadece bir ortak özellik için temel özel değişken değişken tanımlarken kullanılan görüyorum. Diğer özel üye değişkenlerin alt çizgisi yoktur. Bu kullanım, otomatik özelliklerin ortaya çıkmasıyla büyük ölçüde yol kenarına gitti.

Önce:

private string _name;
public string Name
{
    get { return this._name; }
    set { this._name = value; }
}

Sonra:

public string Name { get; set; }

11
Mülklerinin değişmez olmasını isteyen takımlar hariç.
ChaosPandion

11
Alt çizgi ile başlayan tanımlayıcılar derleyici için ayrılmıştır. Ön ek alt çizgilerinin kullanılması derleyici sembolleriyle çakışabilir.
Thomas Matthews

12
Thomas Matthews - C # 'de değil.
EMP

11
@ChaosPandion "değişmez" ile kastettiğinizin aslında "salt okunur" olduğunu varsayıyorum, bu durumda bir kişi kullanabilir public string Name { get; private set; }. Doğru, mükemmel bir şekilde değişmez değil, ama orada.
jdmichal

7
@Thomas Sınıf bağlamında, alt çizgilerle başlayan tanımlayıcılar ve ardından C ++ 'da ayrılmış büyük bir harf gelir . _varayrılmış değil.
Tyler McHenry

84

C ++ 'da herhangi bir değişken adından veya parametre adından önce UNDERSCORES kullanmamanız en iyi uygulamadır

Alt çizgi veya çift alt çizgi ile başlayan isimler C ++ uygulayıcıları için REZERVE EDİLİR. Alt çizgi içeren isimler kütüphanenin çalışması için ayrılmıştır.

C ++ Kodlama Standardında bir okumanız varsa, ilk sayfada şunu söylediğini göreceksiniz:

"Adlandırmayı abartmayın, ancak tutarlı bir adlandırma kuralı kullanın: Yalnızca iki zorunlu dosya vardır: a)" altını çizen adlar ", alt çizgi ile başlayan veya çift alt çizgi içeren adlar kullanmayın;" (p2, C ++ Kodlama Standartları, Herb Sutter ve Andrei Alexandrescu)

Daha spesifik olarak, ISO çalışma taslağı gerçek kuralları belirtir:

Ayrıca, bazı tanımlayıcılar C ++ uygulamaları tarafından kullanılmak üzere ayrılmıştır ve başka şekilde kullanılmamalıdır; teşhis gerekli değildir. (a) Bir çift alt çizgi __ içeren veya bir alt çizgi ve ardından bir büyük harf ile başlayan her tanımlayıcı, herhangi bir kullanım için uygulamaya ayrılmıştır. (b) Alt çizgiyle başlayan her tanımlayıcı, genel ad alanında ad olarak kullanılmak üzere uygulamaya ayrılmıştır.

Yukarıdaki sınırlamalardan birine yanlışlıkla dolaşmanız durumunda alt çizgi ile bir sembol başlatmaktan kaçınmak en iyi uygulamadır.

Bir yazılım geliştirirken bu tür alt çizgi kullanımının neden felaket olabileceğini kendiniz görebilirsiniz:

Bunun gibi basit bir helloWorld.cpp programı derlemeyi deneyin:

g++ -E helloWorld.cpp

Arka planda olan her şeyi göreceksiniz. İşte bir pasaj:

   ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
   try
     {
       __streambuf_type* __sb = this->rdbuf();
       if (__sb)
  {
    if (__sb->pubsync() == -1)
      __err |= ios_base::badbit;
    else
      __ret = 0;
  }

Çift alt çizgiyle kaç adın başladığını görebilirsiniz!

Ayrıca sanal üye işlevlerine bakarsanız, sınıfınızda bir veya daha fazla sanal üye işlevi kullandığınızda otomatik olarak oluşturulan sanal tablo için oluşturulan işaretçi * _vptr olduğunu göreceksiniz! Ama bu başka bir hikaye ...

Alt çizgi kullanırsanız, çatışma sorunlarıyla karşılaşabilirsiniz ve çok geç olana kadar buna neden olan hiçbir Fikri YOK OLACAKSINIZ.


4
Genel veya dosya kapsamı olmayan ve alt çizgi ve küçük harfle başlayan isimler mükemmel değil mi? Bunu her zaman yaparım çünkü belirli durumlar için çok temiz, örneğin: void A :: set_size (int _size) {size = _size; }. Böyle önemsiz kullanımlar için ne yaparsınız?
tukra

3
Küresel olmayan / dosya kapsamında alt çizgi ve ardından küçük harflere izin verildiğine inanıyorum. Standartta nerede olmadığını söylediğini bana gösterebilir misin? Sondaki alt çizgi ile ilgili sorun zaten üye vars için bazen kullanmak olduğunu. Bu yüzden 'int size ();' fonksiyonuna sahip olabilirim üye var 'int size_;' ve 'int _size' argümanı. Bu, işleri güzel bir şekilde kapsamaktadır ve daha iyi alternatifler görmedim. Büyük harfli işlevler, STL ile çalışan jenerikler için mümkün değildir. Çirkin üye erişimi için her zaman kullanmazsanız, C # kişilerin sevdiği 'this.size' stili bana hata eğilimli görünüyor.
tukra

7
Bazı kişilerin alt çizgi ve küçük harf kullanmak istemediğini anlıyorum çünkü yasal olanı net tutmakta zorlanabilirler. C ++ standardı bazı yazarlar tarafından kullanılmamasını tavsiye etse bile buna izin verir. Benim için, tamamen yasal ve rezerve edilmediğinden, riskli olduğunu düşünmek için herhangi bir neden görmüyorum. Geri bildiriminiz için teşekkürler.
tukra

3
@tukra: Tamamen yasal değil . C ++ standardı, yalnızca tek bir alt çizgi ve ardından yerel kapsamda küçük bir harf kullanmanıza izin verir. İyi şanslar! :-)
Constantinos Glynos

4
Afedersiniz. Nitelikleri tekrarlamaya ihtiyaç duyduğumuzu sanıyordum. Alt çizgi ile başlayan ve ardından küçük harfle başlayan bir C ++ tanımlayıcısına, dosya kapsamı dışındaki her kapsamda izin verilir. Fonksiyonlar, fonksiyon prototipleri, sınıflar, yapılar, birlikler, sıralamalar ve bir isim alanına koyduğunuz her şeyde güvenli ve yasaldır. Tüm kodlarınızı ad alanlarına koymak için ortak uygulamayı takip ederseniz, tamamen güvende olursunuz.
tukra

45

Aslında _varkural C # veya C ++ değil VB'den gelir (m _, ... başka bir şeydir).

Bu, Özellikler bildirilirken VB'nin duyarsızlığının üstesinden gelmeye başladı.

Örneğin, böyle bir kod VB'de mümkün değildir userve Useraynı tanımlayıcı olarak kabul edilir.

Private user As String

Public Property User As String
  Get
    Return user
  End Get
  Set(ByVal Value As String)
    user = value
  End Set
End Property

Bunun üstesinden gelmek için, bazıları özel alana '_' eklemek için bir kural kullandı

Private _user As String

Public Property User As String
  Get
    Return _user
  End Get
  Set(ByVal Value As String)
    _user = value
  End Set
End Property

Birçok kural .Net için olduğundan ve C # et VB.NET kuralı arasında bir bütünlük sağlamak için, aynı yöntemi kullanırlar.

Söylediklerimin referansını buldum: http://10rem.net/articles/net-naming-conventions-and-programming-standards---best-practices

Öncü Alt Çizgili Deve Kılıfı. VB.NET'te her zaman "Korumalı" veya "Özel" olarak belirtin, "Dim" kullanmayın. "M_" kullanımı, özellikten yalnızca duruma göre farklılık gösteren bir değişken adının kullanılması, özellikle uyumu engellediği için korunan değişkenlerle kullanılması ve VB.NET'te programladığınızda hayatınızı acı haline getirmesi için önerilmez. üyelerinize erişimci / mutator özelliklerinden farklı bir ad vermeniz gerekir. Buradaki tüm öğeler arasında, en başta gelen alt çizgi gerçekten tartışmalı tek konudur. Ben şahsen özel değişkenlerim için düz alt çizgi-deve durumda tercih ederim, böylece değişken isimlerini "bu" ile nitelemek zorunda değilim. bir adlandırma çarpışması yaşayacağım, inşaatçılar veya başka yerlerdeki parametrelerden ayırt etmek. VB.NET'in büyük / küçük harfe duyarsızlığı nedeniyle, erişimci özelliklerinizin alt çizgi hariç özel üye değişkenlerinizle aynı ada sahip olacağı için bu daha da önemlidir. M_ kadarıyla, gerçekten sadece estetik ile ilgili. Değişken adında bir delik varmış gibi ben (ve diğerleri) m_ çirkin buluyorum. Neredeyse saldırgan. VB6'da her zaman kullanıyordum, ancak bunun nedeni değişkenlerin önde gelen alt çizgileri olamazdı. Gittiğini görmek daha mutlu olamazdı. Microsoft, kodlarında her ikisi de yapmış olsalar bile, m_ (ve düz _) aleyhine önerir. Ayrıca, düz bir "m" ile önek eklenir. Tabii ki, esas olarak C # kodladıkları için, sadece özelliklerinden farklı olan özel üyelere sahip olabilirler. VB millet başka bir şey yapmak zorunda. Her dil için özel durumlar bulmaya çalışmak yerine, onu destekleyecek tüm diller için alt çizgiyi öneriyorum. Sınıfımın tamamen CLS uyumlu olmasını istiyorsam, herhangi bir C # korumalı üye değişkeni önekini bırakabilirim. Ancak uygulamada, potansiyel olarak korunan tüm üye değişkenleri gizli tuttuğum ve bunun yerine korumalı erişimciler ve mutasyon sağlayıcıları sağladığım için bu konuda asla endişelenmiyorum. Neden: Özetle, bu kural basittir (bir karakter), okunması kolaydır (gözünüz diğer önde gelen karakterler tarafından dikkati dağıtmaz) ve yordam düzeyinde değişkenler ve sınıf düzeyi özelliklerle çarpışmaları adlandırmayı başarıyla önler. Sınıf düzeyi özellikler . Bunu destekleyecek tüm diller için alt çizgiyi öneriyorum. Sınıfımın tamamen CLS uyumlu olmasını istiyorsam, herhangi bir C # korumalı üye değişkeni önekini bırakabilirim. Ancak uygulamada, potansiyel olarak korunan tüm üye değişkenleri gizli tuttuğum ve bunun yerine korumalı erişimciler ve mutasyon sağlayıcıları sağladığım için bu konuda asla endişelenmiyorum. Neden: Özetle, bu kural basittir (bir karakter), okunması kolaydır (gözünüz diğer önde gelen karakterler tarafından dikkati dağıtmaz) ve yordam düzeyinde değişkenler ve sınıf düzeyi özelliklerle çarpışmaları adlandırmayı başarıyla önler. Sınıf düzeyi özellikler . Bunu destekleyecek tüm diller için alt çizgiyi öneriyorum. Sınıfımın tamamen CLS uyumlu olmasını istiyorsam, herhangi bir C # korumalı üye değişkeni önekini bırakabilirim. Ancak uygulamada, potansiyel olarak korunan tüm üye değişkenleri gizli tuttuğum ve bunun yerine korumalı erişimciler ve mutasyon sağlayıcıları sağladığım için bu konuda asla endişelenmiyorum. Neden: Özetle, bu kural basittir (bir karakter), okunması kolaydır (gözünüz diğer önde gelen karakterler tarafından dikkati dağıtmaz) ve yordam düzeyinde değişkenler ve sınıf düzeyi özelliklerle çarpışmaları adlandırmayı başarıyla önler. Sınıf düzeyi özellikler . Potansiyel olarak korunan tüm üye değişkenleri gizli tuttuğum ve bunun yerine korumalı erişimciler ve mutantlar sağladığım için bu konuda hiç endişe etmem. Neden: Özetle, bu kural basittir (bir karakter), okunması kolaydır (gözünüz diğer önde gelen karakterler tarafından dikkati dağıtmaz) ve yordam düzeyinde değişkenler ve sınıf düzeyi özelliklerle çarpışmaları adlandırmayı başarıyla önler. Sınıf düzeyi özellikler . Potansiyel olarak korunan tüm üye değişkenleri gizli tuttuğum ve bunun yerine korumalı erişimciler ve mutantlar sağladığım için bu konuda hiç endişe etmem. Neden: Özetle, bu kural basittir (bir karakter), okunması kolaydır (gözünüz diğer önde gelen karakterler tarafından dikkati dağıtmaz) ve yordam düzeyinde değişkenler ve sınıf düzeyi özelliklerle çarpışmaları adlandırmayı başarıyla önler. Sınıf düzeyi özellikler .


6

İlk yorumcu (R Samuel Klatchko) başvuruda bulundu: C ++ tanımlayıcısında alt çizgi kullanma ile ilgili kurallar nelerdir? C ++ alt çizgisi ile ilgili soruyu cevaplar. Genel olarak, derleyicinizin uygulayıcısı için ayrıldığından, önde gelen bir alt çizgi kullanmanız gerekmez. Gördüğünüz kod _varmuhtemelen eski kod veya önde gelen alt çizgilerde kaşlarını çatmayan eski adlandırma sistemini kullanarak büyüyen biri tarafından yazılan koddur.

Diğer cevaplar durumu olarak, C ++ 'da sınıf üyesi değişkenlerini tanımlamak için kullanılır. Bununla birlikte, dekoratörler veya sözdizimi kadar özel bir anlamı yoktur. Eğer kullanmak istiyorsanız, derleyecektir.

C # tartışmasını başkalarına bırakacağım.


5

_var'ın bir anlamı yoktur ve yalnızca değişkenin özel üye değişkeni olduğunu ayırt etmeyi kolaylaştırır.

C ++ 'da, _var kuralını kullanmak kötü bir formdur, çünkü bir tanımlayıcının önünde alt çizginin kullanımını düzenleyen kurallar vardır. _var genel tanımlayıcı olarak ayrılırken, _Var (alt çizgi + büyük harf) her zaman ayrılır. Bu nedenle C ++ 'da var_ kuralını kullanan kişileri göreceksiniz.


4

Kendi kodlama kurallarınızı oluşturabilirsiniz. Ekibin geri kalanı için açık bir doküman yazmanız yeterli.

_Field kullanılması Intelilsense'in _ yazarak tüm sınıf değişkenlerini filtrelemesine yardımcı olur.

Genellikle Brad Adams Yönergeleri'ni izlerim , ancak alt çizgiyi kullanmamanızı önerir.


2

C # için Microsoft adlandırma standardı değişkenlerin ve parametrelerin IE: alt deve durum formunu kullanması gerektiğini söylüyor paramName. Alanlar aynı formu takip etmekten başka birçok takım netlik artırmak için bir alt çizgi öneki için çağrı nedenle bu belirsiz koda sebep olabilir için standart ayrıca çağırır IE: _fieldName .


2

C # ile, Microsoft Framework Tasarım Yönergeleri genel üyeler için alt çizgi karakterini kullanmamanızı önerir . İçin özel üyeleri, alt kullanmak için OK bulunmaktadır. Aslında, Jeffrey Richter (genellikle kılavuzlarda belirtilir) örneğin m_ ve özel statik üyeler için bir "s_" kullanır.

Şahsen, özel üyelerimi işaretlemek için sadece _ kullanıyorum. Yalnızca m. .


Macarca gösterim türü gösterdiğinden, gerçekten m / s eşiğinin üzerinde olduğunu söyleyebileceğinizi sanmıyorum.
Jerry Nixon

@ JerryNixon-MSFT Macarca kavram söz konusu olduğunda değişken veri türü ve değişken görünürlük türünü aynı şey olarak tanımlıyor muyuz?
Necro

1

Sınıflarımın üye değişkenleri için _var adlandırma kullanıyorum. Yapmamın 2 ana nedeni var:

1) Daha sonra kodumu okurken sınıf değişkenlerini ve yerel fonksiyon değişkenlerini takip etmeme yardımcı oluyor.

2) Bir sınıf değişkeni ararken Intellisense'de (veya başka bir kod tamamlama sisteminde) yardımcı olur. Sadece ilk karakterin bilinmesi, mevcut değişkenler ve yöntemler listesi aracılığıyla filtrelemeye yardımcı olur.


1
Daha büyük bir yöntemde, bir varlığın yerel olarak tanımlanıp tanımlanmadığını görmek için fareyle üzerine gelme akıllılığına veya taramaya güvenmek bir güçlüktür. Ayrıca, bahsettiğiniz aynı nedenlerden dolayı statik için "__" i tercih edin, ancak şu anda lehte değil.
crokusek

1

C ve C ++ dilleri söz konusu olduğunda, adın alt çizgisinin (başlangıç, orta veya bitiş) özel bir anlamı yoktur. Bu sadece geçerli bir değişken ismi karakteri. "Sözleşmeler", bir kodlama topluluğu içindeki kodlama uygulamalarından gelir.

Yukarıda çeşitli örneklerle zaten belirtildiği gibi, başlangıçta _, C ++ 'da bir sınıfın özel veya korunan üyeleri anlamına gelebilir.

Eğlenceli trivia olabilecek bazı tarihler vereyim. UNIX'te, çekirdek işlevini kullanıcı alanına göstermek istediğiniz bir çekirdek C kitaplığı işleviniz ve bir çekirdek arka ucunuz varsa, _, başka bir şey yapmadan doğrudan çekirdek işlevini çağıran işlev saplamasının önüne yapışır. Bunun en ünlü ve tanıdık örneği BSD ve SysV türü çekirdekler altında exit () vs _exit () şeklindedir: Orada, exit (), çekirdeğin çıkış hizmetini çağırmadan önce kullanıcı-alanı işlerini yaparken, _exit sadece çekirdeğin çıkış hizmetiyle eşleşir.

Yani _ "yerel" şeyler için bu durumda yerel makine-yerel olmak için kullanıldı. Genellikle _functions () taşınabilir değildi. Bu, çeşitli platformlarda aynı davranışı beklememelisiniz.

Şimdi _ gibi değişken isimlerinde, örneğin

int _foo;

Psikolojik olarak, _, başlangıçta yazmak zorunda kalan tuhaf bir şeydir. Bu nedenle, başka bir şeyle çarpışma şansı daha az olacak bir değişken adı oluşturmak istiyorsanız, özellikle istediğiniz işlemci öncesi ikamelerle uğraşırken _ kullanımını düşünün.

Temel tavsiyem her zaman kodlama topluluğunuzun kurallarına uymaktır, böylece daha etkili bir şekilde işbirliği yapabilirsiniz.


0

Basitçe sınıfta bir üye alanı olduğu anlamına gelir.


0

Belirli bir tek adlandırma kuralı yok, ancak bunu özel üyeler için gördüm.


0

Birçok kişi özel alanların altını çizerek altçizgi ister. Bu sadece bir adlandırma kuralıdır.

C # 'resmi' adlandırma kuralları özel alanlar için basit küçük isimler (alt çizgi yok) reçete.

Alt çizgiler çok yaygın olarak kullanılmasına rağmen, C ++ için standart kuralların farkında değilim.


0

Bazı programcıların sınıfın bir üyesini veya başka bir değişken türünü (parametreler, işleve yerel, vb.) Manipüle ederken bunu açıkça belirtmek için kullandığı bir kuraldır. Üye değişkenleri için de yaygın olarak kullanılan diğer bir kural da ismin önüne 'm_' önekini eklemektir.

Her neyse, bunlar sadece sözleşmelerdir ve hepsi için tek bir kaynak bulamazsınız. Bunlar bir stil meselesidir ve her programlama ekibi, proje veya şirketin kendine ait (hatta hiç yoktur).


0

C # 'da kullanmak için tamamen yasal bir neden var: kod VB.NET'ten de genişletilebilir olması gerekiyorsa. (Aksi halde yapmazdım.)

VB.NET büyük / küçük harfe duyarlı olmadığından, korunan fieldüyeye bu kodda erişmenin basit bir yolu yoktur :

public class CSharpClass
{
    protected int field;
    public int Field { get { return field; } }
}

Örneğin bu, alana değil mülk alıcısına erişir:

Public Class VBClass
    Inherits CSharpClass

    Function Test() As Integer
        Return Field
    End Function

End Class

Heck, fieldküçük harfle bile yazamıyorum - VS 2010 düzeltmeye devam ediyor.

VB.NET'te türetilmiş sınıflara kolayca erişilebilmesi için, bir başka adlandırma kuralı bulmak gerekir. Bir alt çizginin ön eki muhtemelen bunların en az müdahaleci ve en "tarihsel olarak kabul edilen" idir.


0

Şimdi this.foobarbaz'da olduğu gibi "this" kullanarak gösterim C # sınıfı üye değişkenleri için kabul edilebilir. Eski "m_" veya sadece "__" gösteriminin yerini alır. Kodun daha okunabilir olmasını sağlar, çünkü referansta ne olduğuna şüphe yoktur.


0

Deneyimlerime göre (kesinlikle sınırlı), alt çizgi özel üye değişkeni olduğunu gösterecektir. Gollum'un dediği gibi, bu takıma bağlı olacak.


0

Eski soru, yeni cevap (C #).

C # için alt çizgilerin bir başka kullanımı ASP NET Core'un DI (bağımlılık enjeksiyonu). readonlyİnşaat sırasında enjekte edilen arayüze atanan bir sınıfın özel değişkenleri bir alt çizgi ile başlamalıdır. Sanırım bir sınıfın her özel üyesi için alt çizgi kullanıp kullanmayacağına dair bir tartışma (Microsoft'un kendisini takip etmesine rağmen) ama bu kesin.

private readonly ILogger<MyDependency> _logger;

public MyDependency(ILogger<MyDependency> logger)
{
    _logger = logger;
}

-2

Bunun gibi bir adlandırma kuralı, özellikle kendi kodunuz olmayan kodu okurken yararlıdır. Güçlü bir adlandırma kuralı, belirli bir üyenin nerede tanımlandığını, ne tür bir üye olduğunu vb. Belirtmeye yardımcı olur. Çoğu geliştirme ekibi basit bir adlandırma kuralını benimser ve üye alanlarını alt çizgi ( _fieldName) ile önek olarak ekler . Geçmişte, C # için aşağıdaki adlandırma kuralını kullandım (Reflektör ile görülebilen .NET çerçeve kodu için Microsofts kurallarına dayanmaktadır):

Örnek Alanı: m_fieldName
Statik Alan: s_fieldName
Genel / Korumalı / Dahili Üye: PascalCasedName ()
Özel Üye: camelCasedName ()

Bu, insanların tanıdık olmayan kodu çok hızlı okurken üyelerin yapısını, kullanımını, erişilebilirliğini ve yerini anlamalarına yardımcı olur.


3
Aslında, Microsoft m_, s_ öneklerini kullanmanızı önermez. Alan adları için önek kullanmayın. Örneğin, statik ve statik olmayan alanları ayırmak için g_ veya s_ kullanmayın. msdn.microsoft.com/en-us/library/ms229012.aspx
Zied

1
Dediğim gibi, kaynak kodlarına Reflector ile bir göz atın. Kendi önerilerini ne kadar daralttıklarına şaşıracaksınız. ;) Yazımdan da bahsedildiği gibi, kodunuzun okunabilirliğini artırmaya yardımcı olur ve son ekibim yukarıda listelenen adlandırma kuralını gerçekten sevdi.
jrista
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.