2010-05-18 21 views
10

Bunu sık sık araştırıyorum ki başkalarının bu konuda neler söylediğini görebileceğimi düşündüm.C# 'daki bir özellikten bir sınıf adını ayırt etmek için iyi bir adlandırma kuralı nedir?

StyleCop kurallarını kullanarak, genellikle, eriştiği sınıf adından farklı bir şekilde zor olan bir özellik adının bulunduğunu tespit ediyorum. Örneğin:

public class ProjectManager 
{ 
// Stuff here 
} 

public class OtherClass 
{ 
    private ProjectManager ProjectManager { get; set; } 
} 

Bu derler ve çalışır, ancak o bile "bu" kullanımı ile şeyleri karıştırmamak için kolay bir yol olacak gibi görünüyor.

+9

Renk Rengi sorunu. Özellik * için en iyi isim * sınıf adıysa, onunla geçin. Aksi takdirde, mülkünüzü ve/veya sınıf adlarınızı gereksiz yere aşırıya kaçma alışkanlığına kapılabilirdiniz. –

+0

Katılıyorum, beni de karıştırıyor. this.ProjectManager oldukça olsa çözer. – kenny

+1

Gerçekten de, bu ünlü "Renk Renk" sorunudur. C# dili dikkatli bir şekilde tasarlanmıştır, böylece bu desenden kurtulursunuz, ancak bazı ilginç köşe durumlarına neden olur. Bu kuralların sonuçlarının bazı analizleri için makalemize bakın: http://blogs.msdn.com/ericlippert/archive/2009/07/06/color-color.aspx –

cevap

11

Bu aslında .Net programlamada çok yaygın bir modeldir. Özellikle de Enum Tipleri ve üyeleri ile birlikte .Net Tasarım Yönergeleri, programlamanın önerilen yoludur. bu biraz kafa karıştırıcı olsa da

4,0 tasarım kuralları bunu birkaç kez gördük bir kez değil,

başvuru. Araçlar bu deseni iyi desteklemektedir ve bir tanesi bir tiptir ve diğerinin bir örneği yanlışlıkla bir derleme hatasına neden olmadan bunları tersine çevirmek zordur.

+0

Jared, bu bağlantının güncel sürümünü gönderebilir misiniz? .NET 1.1 linkleri yayınlandığında, bazı insanlar .NET 1.1 dünyasında olduklarını fark etmeden daha fazla bağlantıyı takip ederler. –

+0

@John, 1.1 sürümlerine bağlandığımı bile bilmiyordum. Bunu yakaladığın için teşekkürler. 4.0 yönergeleri için güncelleştirildi – JaredPar

+0

şirketinizin en kötü şekilde .NET 3.5 veya .NET 2.0 sürümüne yükseltmesi gerekiyor. :-) –

4

Belirli bir sınıf içinde yalnızca tek bir özellik ProjectManager olduğunda normal bir adlandırma kuralı budur. Kafa karıştırıcı olmayı keser çünkü ProjectManager türünün başka kullanımı yoktur.

Elbette, başka kullanımlar varsa, farklı isimlere ihtiyacınız vardır.

1

Diğer cevaplara katılıyorum. Bütünlük uğruna, bazen sınıf adını biraz daha genelleştirmenin bir yolunu bulurum. Ben senin örneğin sadece bir örnekti anlıyorum, ama tek yön olurdu yapmak:

public class Person 
{ 
    // Stuff here 
} 

public class OtherClass 
{ 
    private Person ProjectManager { get; set; } 
} 

Bu biraz daha okunabilir olmasına yardımcı olur. Fakat aynı sınıf ismine ve mülke sahip olmak kesinlikle kabul edilebilir (hatta teşvik edilir).

İlgili konular