Frage

Ich frage mich, ob es irgendwelche Gründe gibt (abgesehen vom Aufräumen des Quellcodes), warum Entwickler die Funktion „Nicht verwendete entfernen“ verwenden Usings„Funktion in Visual Studio 2008?

War es hilfreich?

Lösung

Es gibt ein paar Gründe, warum Sie sie herausnehmen wollen würde.

  • Es ist sinnlos. Sie fügen hinzu, keinen Wert.
  • Es ist verwirrend. Was aus diesem Namensraum verwendet wird?
  • Wenn Sie nicht tun, dann werden Sie allmählich sinnlos using Aussagen als Code-Änderungen im Laufe der Zeit ansammeln.
  • Statische Analyse ist langsamer.
  • Code-Kompilierung ist langsamer.

Auf der anderen Seite gibt es nicht viele Gründe, sie in lassen. Ich nehme an, Sie sich die Mühe sparen, sie löschen zu haben. Aber wenn Sie, dass faul sind, haben Sie größere Probleme bekommen!

Andere Tipps

Ich würde sagen, ganz im Gegenteil - es extrem hilfreich, nicht benötigen, unnötige Verwendung von Aussagen zu entfernen

.

Stellen Sie sich in 3, um Ihren Code gehen zurück 6, 9 Monate - oder jemand anderes über Ihren Code hat zu nehmen und zu warten.

Wenn Sie eine riesige lange Liste der Wäsche-Anweisung, die nicht wirklich benötigt werden, Blick auf den Code ziemlich verwirrend sein könnte. Warum ist da drin, dass die Verwendung, wenn nichts aus diesem Namensraum verwendet wird ??

Ich denke, in Bezug auf die langfristige Wartbarkeit in einem professionellen Umfeld, würde ich vorschlagen, stark Ihren Code so sauber wie möglich zu halten - und das schließt unnötige Sachen von ihm Dumping. Weniger Unordnung ist gleich weniger Verwirrung und damit höhere Wartbarkeit.

Marc

Das scheint mir eine sehr vernünftige Frage zu sein, die von den Menschen in ganz frivol Weise behandelt wird, zu reagieren.

Ich würde sagen, dass jede Änderung des Quellcodes gerechtfertigt werden muss. Diese Veränderungen können versteckt Kosten haben, und die Person, die die Frage aufwerfen wollte dies bewusst gemacht werden. Sie fragen nicht „faul“ genannt zu werden, als eine Person inimated.

Ich habe gerade erst begonnen ReSharper verwenden, und es beginnt Warnungen und Stil Hinweise auf das Projekt zu geben, ich verantwortlich bin. Unter ihnen ist die Beseitigung redundanter using-Direktive, sondern auch redundante Qualifier, Kapitalisierung und viele mehr. Mein Bauchgefühl ist, den Code und löst alle Hinweise, ordentlich, aber mein Geschäft Kopf warnt mich vor ungerechtfertigten Änderungen.

Wir verwenden einen automatisierten Build-Prozess, und daher wäre jede Änderung unserer SVN-Repository Änderungen generiert, die wir nicht für Projekte / Bugs / Probleme in Verbindung bringen könnten, und automatisiert auslösen würden baut und Freisetzungen, die zu früheren Versionen keinen funktionellen Wechsel gestellt.

Wenn wir die Entfernung der redundanten Qualifikations schauen, dies möglicherweise Verwirrung für Entwickler als Klassen unserer Domain und Datenschichten werden nur von der Qualifikation differenziert führen können.

Wenn ich mir die ordnungsgemäße Verwendung der Aktivierung von anachronyms (d ABCD -> ABCD). Dann muss ich berücksichtigen, dass ReSharper Refactoring nicht eine der XML-Dateien wir, dass die Referenzklassennamen verwenden

So, trotz dieser Hinweise ist nicht so geradlinig, wie es scheint, und sollten mit Respekt behandelt werden.

Weniger Optionen im Intellisense Popup (vor allem, wenn die Namespaces viele Erweiterungsmethoden enthalten).

Theoretisch Intellisense sollte schneller sein.

Zusätzlich zu den bereits genannten Gründen, verhindert es nicht notwendig, Namenskonflikte. Betrachten Sie diese Datei:

using System.IO;
using System.Windows.Shapes;

namespace LicenseTester
{
    public static class Example
    {
        private static string temporaryPath = Path.GetTempFileName();
    }
}

Dieser Code kompiliert nicht, weil sowohl die Namespaces System.IO und System.Windows.Shapes jeweils eine Klasse namens Pfad enthalten. Wir konnten das Problem beheben, indem Sie den vollständigen Klassenpfad verwenden,

        private static string temporaryPath = System.IO.Path.GetTempFileName();

oder wir könnten die Linie using System.Windows.Shapes; einfach entfernen.

entfernen. Weniger Code zu betrachten und sich fragen, über Zeit und Verwirrung erspart. Ich wünschte, mehr Leute würden die Dinge einfach halten, sauber und ordentlich. Es ist wie mit schmutzigen Hemden und Hosen in Ihrem Zimmer. Es ist hässlich und man muss sich fragen, warum es da ist.

Es hilft auch falsch zirkuläre Abhängigkeiten zu vermeiden, vorausgesetzt, Sie sind auch in der Lage, einige dll / Projektreferenzen aus dem Projekt nach dem Entfernen der nicht verwendeten usings zu entfernen.

Code kompiliert schneller.

Zumindest theoretisch sollten Sie, wenn Sie eine C#-CS-Datei (oder eine einzelne Programmquellcodedatei) erhalten, in der Lage sein, sich den Code anzusehen und eine Umgebung zu erstellen, die alles simuliert, was er benötigt.Mit einigen Kompilierungs-/Analysetechniken können Sie sogar ein Tool erstellen, das dies automatisch erledigt.Wenn Sie dies zumindest im Kopf tun, können Sie sicherstellen, dass Sie alles verstehen, was in der Codedatei steht.

Stellen Sie sich nun vor, Sie hätten eine .cs-Datei mit 1000 erhalten using Richtlinien, von denen nur 10 tatsächlich verwendet wurden.Wann immer Sie sich ein Symbol ansehen, das neu in den Code eingeführt wird, der auf die Außenwelt verweist, müssen Sie diese 1000 Zeilen durchgehen, um herauszufinden, was es ist.Dies verlangsamt offensichtlich den oben genannten Vorgang.Wenn Sie sie also auf 10 reduzieren können, wird es helfen!

Meiner Meinung nach ist das C# using Die Direktive ist sehr, sehr schwach, da Sie kein einzelnes generisches Symbol angeben können, ohne dass die Generizität verloren geht, und Sie können sie nicht verwenden using alias-Direktive zur Verwendung von Erweiterungsmethoden.Dies ist in anderen Sprachen wie Java, Python und Haskell nicht der Fall. In diesen Sprachen können Sie (fast) genau angeben, was Sie von der Außenwelt erwarten.Aber dann würde ich vorschlagen, es zu verwenden using Alias, wann immer möglich.

Vor kurzem habe ich einen anderen Grund, warum das Löschen nicht verwendeten Importe sehr hilfreich und wichtig ist.

Stellen Sie sich zwei Baugruppen haben, wo man die andere verweist (vorerst nennen wir mal die erste A und die referenzierte B). Nun, wenn Sie Code in A, die auf B hängt alles ist in Ordnung. Doch irgendwann in Ihrem Entwicklungsprozess Sie feststellen, dass Sie tatsächlich, dass Code dont brauchen mehr, sondern verlassen Sie die using-Anweisung, wo es war. Jetzt haben Sie nicht nur eine sinnlose using-Richtlinie, sondern auch eine Montage-Referenz B, die nicht überall, aber in der veralteten Richtlinie verwendet. Dies zum einen erhöht die Menge an Zeit für die Erstellung A benötigt, da B auch geladen werden muss.

Das ist also nicht nur ein Thema auf sauberes und einfachen Code zu lesen, sondern auch den Montag Verweise in Produktionscode auf der Erhaltung, wo nicht alle diese referenzierten Assemblys auch existieren .

Schließlich in unserem exapmle hatten wir zusammen B und A zu versenden, obwohl B nicht überall in A verwendet wird, aber in dem using Schnitt. Dies wird massiv beeinflussen die Laufzeit -Aufführung von A wenn Laden die Montage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top