Gereksiz referanslara ve kullanımlara sahip olmanın sonuçları nelerdir?


12

Biraz temiz bir ucubeyim ve usingsadece gerçekte kullanılanı tutmak için her sınıftaki referansları ve s'leri temizleyerek projelerimi koruma eğilimindeyim .

Başka hangi argümanları (OKB sinirimi sakinleştirmenin yanı sıra) esaslara uydurmak için yapabilirim? Ben çoğunlukla sistem referansları düşünüyorum, özel çalışma herhangi bir referans onun geriye dönük uyumluluk sorunları getirecektir. Serbest bırakma ayak izi daha mı büyük? Zaman daha mı uzun?


5
usingS ve referansların aynı şey olmadığını unutmayın . Cevapların çoğu bunu dikkate almıyor.
phoog

1
Kodu temiz tutmak ve minimum düzeyde kullanmak istiyorsanız, ReSharper satın almayı düşünün. Visual Studio'ya inanılmaz bir uzantı. Onsuz yaşayamam / program yapamam. ;-)
Anders

Yanıtlar:


13

Intellisense, usingminimumda kalırsanız sizin için çok daha yararlı bir hal alır ve bu büyük bir avantajdır.

Bunun dışında herhangi bir kazanç olduğunu düşünmüyorum. Yani belki C # derleyicisi% 1 daha hızlı çalışacaktır; ne olmuş yani.


1
% 1'in kümülatif değeri dikkate değerdir ... ama temel olarak derleyicinin herhangi bir problemi optimize etmesini beklersiniz. Ancak sadece düzenli olmakla ilgili bir sorunum yok
Murph

C # IntelliSense, 2005'ten bu yana, kesinlikle her şeyi listeye dökmeye başladıklarında biraz dağınık.
Rei Miyasaka

@ReiMiyasaka böylece istediğiniz ve sonra ne yaparsak IntelliSense almak Ctrl+."ad ekleyin çabuk saptamak için XYZ"
kizzx2

1
@Murph:% 1'lik kümülatif değer ne kadar büyük olursa olsun, birikmiş toplamın% 1'i kalacaktır, bu yüzden her zaman önemsiz olacaktır. Ayrıca, derleyici, usingaslında gereksiz olduklarını anlayana kadar hiçbir şeyi göz ardı edemez , ancak önce tüm kaynak dosyanızı derlemedikçe bunu anlayamaz. Proje referanslarında olduğu gibi, sadece kullanılmadıkları için atılmazlar, çünkü dinamik (derleme zamanında tespit edilemez) bir şekilde kullanılabilirler.
Mike Nakis

1
Biraz geç, ama benim durumumda çok sınırlı bir kaynak cihaz için bir uygulama oluşturuyoruz. Gereksiz referansların eklenmesi son uygulama boyutunu etkiler. Ve paketi dağıtmaya ve diğer paketlerle rekabet etmeye çalışacağız, daha büyük bir paket kullanıcının uygulamayı indirip indirmeyeceği konusunda iki kez düşünmesini sağlayabilir.
hmadrigal

9

Bunu Visual Studio'da (basit sağ tıklama) gerçekleştirmek neredeyse önemsiz olduğundan, neden yapmıyorsunuz?

Bu Occam'ın Razor'u ile tutarlı , sadece iyi bir mühendislik.

Bunu yapmamanın sonuçlarıyla ilgili olarak, başka bir geliştirici projenizi açmaya çalışırsa ve bilgisayarında olmayan bir kütüphaneye (kullanılmayan) bir referans içeriyorsa ne olacağını düşünün. Artık zayıf geliştiricinin, çözümlenmemiş referansın neden var olduğunu ve bu konuda ne yapacağını bulması gerekiyor.

İsterseniz, altın kural olarak düşünün. Bilgisayarınızda bulunmayan ve neden orada olduklarına dair hiçbir fikriniz olmayan kütüphanelere çok sayıda referansı olan bir projenin geliştirilmesini devralmak ister misiniz?


+1, tüm çözüm için bunu yapabilen bir eklenti var. Bu da bana tipik bir web sayfası yaklaşık 1 MB olduğu için tüm program optimizasyonunun önemli olduğu ClojureScript ve Google Closure videosunu hatırlattı. Gerekli olmayan şeyleri temizlemek iyi bir alışkanlıktır.
Meslek

6

usingifadeleri sadece derleyicinin sınıflara tam olarak başvurabilmesi içindir. Ekstra usingifadelerin derleme süresi üzerinde kayda değer bir etkisi olmayacaktır.

Ayrıca, çalışma zamanı gerçekten gerekli olana kadar başvurulan bir derleme yüklemez, bu yüzden yine gereksiz referansların olumsuz sonuçları olduğuna inanmıyorum.

Reflektör gibi bir araç kullanırsanız, bu gereksiz bitleri bulmak ve kaldırmak çoğunlukla otomatik olabilir, bu yüzden bu aktivitelere çok zaman harcamanın israf olduğunu söyleyebilirim. Örneğin, bir ya da iki saat gereksiz usingifadeleri manuel olarak bir Reflector lisansı için ödediğinden daha fazla kaldırır ve diğer birçok üretkenliği artıran özelliklerle birlikte gelir.


Temizlik kullanarak VS 2010 yerleşik bir özelliktir (Bence 2008 de). Ve ReSharper referansları da yapabilir. Ama evet, büyük çaplı bir temizlik yapmadan önce, bunu benim için yapmak için bir araç kullanmayı düşünürdüm.
MPelletier

Kullanılmayan usings ve kullanılmayan referanslar arasındaki farkı açıkça ifade etmek için +1 . İkisi çok farklı!
phoog

1

Yukarıdakilere ek olarak, her referansın .NET çerçevesi içinde veya harici bir DLL içinde bir bileşen gerektirdiğini henüz belirtmedim. Harici bir DLL başvurusu yapılırsa, yazılımı çalıştırdığınızda (ve nerede) buna sahip olmanız gerekir.

Düzenle - Aşağıdaki phoog tarafından geçerli bir yoruma göre: DLL kullanılmazsa ve sadece başvurulara eklendiği için uygulama ile birlikte gönderilmesi gerekmiyorsa uygulama yine de çalışır. Koddaki kullanılmayan referanslarla ilgilenmek için şunlara bakmak isteyebilirsiniz: Kullanılmayan referansları kaldırma .


1
Başvuru kullanılmazsa, yazılımı çalıştırdığınızda ve çalıştırdığınızda DLL'ye ihtiyacınız olmayacaktır.
phoog

@phoog, yorumunuz için teşekkürler. En azından .NET VS2010'da, çözeltiye el ile bir başvuru eklerseniz, kodda kullanmasanız bile DLL, bin klasörüne fiziksel olarak eklenir.
NoChance

1
Ancak, DLL dosyasını bin klasöründen silerseniz veya uygulamayı DLL olmadan yayınlarsanız, uygulamanın yine de çalışması gerekir.
phoog

@foog, haklısın, bunu belirttiğin için teşekkürler. Gönderiyi düzenleyeceğim.
NoChance
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.