2009-07-11 27 views
6

Gelişen, organize ederken, * .cs sineklerini kendi klasörlerine gruplandırmayı gruplandırmayı seviyorum:C# İsim alanları/Klasörler: ne zaman çok organize/çok fazla isim alanı oluşturuluyor değil mi?

->Project 
--->Enums 
--->Exceptions 
--->Extensions 
--->Providers 
--->Configuguration 
--->Design 
--->etc. 
    Manager.cs 

Hepinizin bildiği gibi, Visual Studio varsayılan olarak her klasör için yeni bir Ad Alanı oluşturur:

Company.Product.Enums.MyEnumClass.cs 
... 
Company.Product.Exceptions.ExceptionBase.cs 
etc. 

Hangi artıları vardır ... ve eksileri.

İyi tarafı, intellisense ile, bir montajın nasıl tasarlandığını anlamak için önemsiz hale geliyor: tüm parçaları ve sadece istediğiniz parçaları (her bir sınıfa, enum'a, statik uzatma clasına,

Dezavantajı, kodlama için gerçek bir yığın yığını kullanmak zorunda kalmanızdır.

using Company.project.Enums; 
using Company.project.Model; 
using Company.project.Extensions; 
... 
etc. 

çalışmanın sorunları var ... hangi uzantıları ile göz kamaştırıcı hale geldi ... Bu durumun gidiş yolunun bu kadar büyük olmadığı netleştiği durumlardan biri (Uzantıları kullanarak eklemeyi unutmak çok kolay değil) istediğim şeyi yapmak için zaten yöntemler vardı ...)

Bir yandan, yıllardır yaptığım şekilde organize olmanın ve Intellisense'in yolun olmasına izin verme seçeneğim var. Bir meclisin yeni kullanıcısı, işlevselliği ile hızlı bir şekilde hızlandığını d şunları içerir: ... diğer bir şey, her şeyi bir isim alanına koymak ... ve meclise nasıl başlanacağına dair iyi bir belge yazmak ... (daha fazla maliyet/ve dürüst olmak gerekirse, asla küçük projeler için, vs.)

Namespaces ile ilgili resmi MSDN belgeleri, hangi yoldan gideceğiniz konusunda tavsiyede bulunmaz: http://msdn.microsoft.com/en-us/library/893ke618(VS.71).aspx

Bundan önce, yollarımı değiştirmeden önce neye ilgi duyuyorum diğerleri yapıyor ve neden ... ne yapıyorsun ve neden tam olarak?

+0

O bu konuda burada istendi anlaşılmaktadır: http://blogs.msdn.com/joen/archive/2004/03/15/90002.aspx –

cevap

9

Yanlış organize ettiğinizi düşünüyorum. Enum/uzantı vb. Ile düzenleme yapmayın. Türün nasıl kullanıldığına göre düzenleyin. İlgili türleri bir araya getirin.

Ayrıca, başvurduğunuz yönergeler .NET 1.1 günlerinden! İpucu, URL’deki V7.1’dir. Doğru başvuru, Design Guidelines for Developing Class Libraries'un bir parçası olan Names of Namespaces'dur.

+0

Merhaba John: Teşekkür güncellenen bağlantılar için, zaman genişletilebilir hangi Konu hakkında, en az bir smidgeon. Görünüşe göre her şey bir araya toplanmalı ... Ve bazen bu bir isim alanında çok fazla derse yol açıyor. bile önemsiz bir örneği ele alalım, bir dll: * İş Varlıkları, * arabirimleri, uyguladıkları BizEntities o ... BE özellikleri için kullanılan * Numaralamalar * özelliklere BE adlı etmek * Uzantıları ayarlarken kaldırdı İstisnalar. .. Burada farklı işlevler/gruplar hakkında konuşmamıştım bile. Sadece bir tane. Ve yine de kolayca bir isim alanında 80+ sınıflara yol açabilir. Yorumlar? –

+2

Hayır, her şey bir araya toplanmalıdır. Kodun işlevsel alanı tarafından organize edilmelidir - sadece ne tür bir tip değil. –

+0

Merhaba John: Tekrar teşekkürler. İşlevsel sınırları düşündüğünüzü anlamakta biraz sorun yaşıyorum. Birisi Mesajları ve aşağıdaki Sağlayıcı fabrikasını işlemek için bir mecraya sahipse, bunu nasıl kırırsınız? Tümü Ortak Varlıklar (Mesaj, Eklenti, Adres, Üstbilgiler) ile doludur, ortak MessageExceptions'ı yükseltir, Ortak Enums (MessagePriority, Önem, vb) ve bir MessagingManager + birkaç Sağlayıcı (LLBLGenBasedProvider, InMemProvider, vb) kullanır. bir işlev alanı: Mesajlar. .. Birlikte mi çöker yoksa alt NS’lerde mi kırılır? Ve eğer öyleyse, ne/nerede? –