Gibt es irgendwelche Vorteile beim Entfernen nicht verwendeter using-Anweisungen in einem VS-Projekt?


21

Gibt es irgendwelche Vorteile beim Entfernen nicht verwendeter using-Anweisungen in einem VS-Projekt (wie dies mit Resharper möglich ist), oder kümmert sich VS beim Erstellen / Bereitstellen automatisch darum?


1
Haben Sie den Eindruck, dass Sie nach removing unused references(DLLs) gefragt haben, und alle Antworten beziehen sich auf removing unused using statements.
Răzvan Flavius ​​Panda

@ RăzvanPanda: Nein, es wird mit Aussagen; Ich muss tschechisch, wenn Sie Letzteres mit R # machen können - das wäre auch angenehm niedrig.
B. Clay Shannon

Aight, die Formulierung korrigierend, um der Bedeutung zu entsprechen.
Răzvan Flavius ​​Panda

1
Sie können nicht verwendete DLL-Referenzen mit der neuesten Version von R # entfernen. Es ist jedoch wichtig, auf dynamische DLL-Referenzen zu achten, da dies zur Laufzeit zu Problemen führen kann.
Răzvan Flavius ​​Panda

Antworten:


23

Es gibt keine Leistungsvorteile, wenn Sie das meinen.

Alle Referenzen in einer Baugruppe sind vollständig qualifiziert. Der Compiler verwendet lediglich die Referenzen, die Sie in Ihrem Code angeben, um die Bezeichner vollständig zu qualifizieren. Die einzige Auswirkung nicht verwendeter Referenzen in Ihrem Quellcode ist eine geringfügige Abnahme der Lesbarkeit (warum ist diese Referenz hier?) und eine geringfügige Verlängerung der Kompilierzeit.

Anders ausgedrückt ist die generierte IL genau gleich, unabhängig davon, ob Sie die nicht verwendeten Referenzen entfernen oder nicht.


Das Entfernen nicht verwendeter Nutzungen kann einen indirekten Vorteil haben. Wenn dies wiederum das Entfernen eines oder mehrerer Verweise auf externe DLLs aus einer Lösung ermöglicht, kann dies die Bereitstellungsgröße und / oder die Startzeit der Anwendung beeinträchtigen.
Wehr

1
Die generierte IL ändert sich nicht, wenn Sie Nutzungen entfernen, sodass ich nicht sehe, wie etwas davon betroffen wäre.
Robert Harvey

True: IL ändert sich nicht, wenn Sie nicht verwendete usings- oder DLL-Referenzen hinzufügen ( Reference IncludeMSBuild-Dateielement, /reference:CSC-Argument). Ich hatte vorgehabt: Entfernen Sie nicht verwendete usings aus einem Webanwendungsprojekt. Dies waren die einzigen Codezeilen, die die Aufnahme einer Reihe von DLL-Referenzen erzwangen. Entfernen Sie diese nun. Wie Sie sagen, wird schneller erstellt, wenn Referenzen UNC-Pfade sind (CSC überprüft alle Referenzpfade). Trivialer Gewinn 2: Die CI-Geschwindigkeit (Skripte greifen auf alle referenzierten DLLs zu) wird verbessert, da weniger Dateien kopiert werden, z.
Wehr

Kürzerer Code ist besser lesbarer Code. Weniger ist mehr - das ist der Vorteil und es lohnt sich aus diesem Grund.
Niico

24

Ja, ich kann mir zwei Hauptvorteile vorstellen:

  1. Abgesehen von ihrem primären funktionalen Zweck (dh der Reduzierung der Code-Ausführlichkeit) kann die Anweisungsliste "Using" am Anfang einer Codedatei zukünftigen Lesern (insbesondere solchen ohne Resharper) mitteilen, welche Namespaces für diese Codedatei relevant sind (oder zumindest waren ) . Wenn Sie diese Liste aktiv beschneiden, kann sie als besserer Signalisierungsmechanismus dienen.
  2. Durch das Entfernen nicht verwendeter Namespaces wird die Anzahl der Kandidaten für die automatische Vervollständigung in Ihrem Texteditor während der Eingabe verringert. Wenn Sie sich überhaupt auf die Autovervollständigungslisten verlassen, können Sie "auf der Geraden und Engen" bleiben und sogar schneller tippen, da Sie den gewünschten Autovervollständigungskandidaten möglicherweise etwas schneller finden sollten.

1
Ah, sehr gute Punkte, besonders # 2!
B. Clay Shannon

0

Das Entfernen von nicht verwendetem Code ist nur zusätzliches Gepäck und die Effizienz lässt sich nur schwer messen.

  • Das Entfernen von nicht verwendetem Code verkürzt die Kompilierungszeit. Ich arbeite an einem Projekt, das zwischen 15 und 20 Minuten dauert. Es gibt jede Menge nicht verwendeten Code. Durch das Eliminieren von nicht verwendetem Code wurde die Kompilierungszeit auf ~ 7 Minuten verringert. Dies macht einen Unterschied, wenn viele Entwickler im Team sind. Dies spart jedem Zeit, um schnell zu bauen und zu testen.

  • Wenn Sie Ihre Build- und Komponententests automatisiert haben, haben Sie jetzt Komponententests entfernt, die Sie nicht benötigen. Auch dies reduziert die Zeit, die für die Durchführung von Komponententests benötigt wird. Nur mehr Effizienz in Ihrem Continuous Build Management-Prozess.

    • Nicht verwendeter Code führt zu einer größeren Stellfläche Ihrer Binärdateien. Ein kleinerer Code-Footprint verringert die Zeit, die zum Laden / Starten benötigt wird. Obwohl die Gewinne sehr dürftig und subjektiv sein können.

4
die Frage ist nicht über nicht verwendete Code im Allgemeinen, es geht um nicht verwendete Referenzen
gnat

sehen ... wie man Antwort : „Lesen Sie die Frage sorgfältig Was. Insbesondere ist die Frage zu fragen Stellen Sie sicher , Ihre Antwort sieht vor, dass - oder eine echte Alternative ...?“
gnat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.