Aus welchen Gründen sollte ich den Abschnitt "using" in C # sauber halten?

11

Einmal, als ich meinen Code umgestaltete, ging ich die IDE in den using- Abschnitt meiner C # -Klasse, bereinigte nicht verwendete Namespaces und doppelte Namespaces und sortierte sie alle.

Mein Paar (Paarprogrammierung) fragte mich nach dem Grund. Ich hatte keine Ahnung, warum ich das getan habe. Ich habe es aus Gewohnheit gemacht, meinen gesamten Code sauber und ordentlich zu halten. Ich meine, ich habe ihm gesagt, dass ein sauberer Code im Allgemeinen eine gute Idee ist, aber dieser Grund war natürlich keine gute Rechtfertigung, da ich mich nicht einmal die Mühe machen werde, meine Zeit im Abschnitt " Verwenden " einer C # -Codeseite zu verbringen .

Da Sie häufig eine Klasse oder eine Aufzählung (oder einen Typ im Allgemeinen) von einem Namespace in einen anderen Namespace verschieben, werden Ihrem Code neue using-Anweisungen hinzugefügt (entweder manuell, indem Sie das Codefenster öffnen und die using-Anweisung selbst schreiben, oder über den Editor ( Alt+ Ctrl+ F10Kombination), und da diese neuen using-Anweisungen am Ende des Verwendungsabschnitts hinzugefügt werden , wodurch sie nicht alphabetisch sortiert werden und der Compiler sich nie über eines dieser Probleme beschwert, warum sollten wir uns darum kümmern? Abschnitt sauber und ordentlich? Welche Gründe könnten wir haben?

Saeed Neamati
quelle
5
Dies wurde bereits auf Stack Overflow gefragt und beantwortet - stackoverflow.com/questions/4163320/unused-using-statements (und die beiden verknüpften Fragen in der Seitenleiste) - im Grunde gibt es keinen Grund, sich über nicht verwendete Verwendungen Sorgen zu machen
ChrisF
Tolle Referenz @ChrisF, ich glaube, ich habe dort meine Antwort bekommen. Vielleicht sollten Sie sich dieser Frage anschließen oder etwas Ähnliches tun. :)
Saeed Neamati
Überprüfen Sie dies auch: stackoverflow.com/a/136646/333306

Antworten:

22

Es gibt keinen Leistungsunterschied, egal wie viele usingAnweisungen Sie haben.

Aber ich denke, es ist aus zwei Gründen sinnvoll, sie sauber zu halten:

  1. Wenn Sie sich das usings ansehen , können Sie sehen, welche Abhängigkeiten die Datei hat. Dies kann Ihnen helfen, herauszufinden, was die Typen in der Datei tun. Wenn Sie dies tun, können usingSie es schneller sehen, wenn Sie das s in einer bestimmten Reihenfolge haben.
  2. Wenn Sie zu viele usings haben, kann dies darauf hinweisen, dass Sie eine schlechte Trennung der Bedenken haben und dass die Typen in der Datei zu viel bewirken.

Beides ist nicht sehr wichtig, deshalb sollten Sie sich nicht zu viele Sorgen machen. Aber ich persönlich denke, es lohnt sich, das usings sauber zu halten.

svick
quelle
8

Meine Hauptgründe für die Bereinigung unter den using-Anweisungen sind:

  • Je mehr Anweisungen verwendet werden, desto größer ist die Möglichkeit, Konflikte zu benennen. Dies würde bedeuten, dass Sie Teile des Namespace in den Code aufnehmen müssen, um Mehrdeutigkeiten zu vermeiden.
  • Der IntelliSense wird basierend auf allen Assemblys in Ihren using-Anweisungen gefiltert. Wenn Sie also unnötige Anweisungen bereinigen, helfen Sie sich selbst, indem Sie die Genauigkeit von IntelliSense verbessern.

Darüber hinaus stimme ich den anderen Antworten darin zu, dass dies die Lesbarkeit erhöht und es einfacher macht, eine Vorstellung davon zu bekommen, was die Typen in der Klasse tun.

Fredrik Ljung
quelle
Ich verstehe nicht, warum dies nicht höher gewählt wird. Namespace-Konflikte sind ein legitimes Problem.
RubberDuck
7

„Perfektion wird nicht erreicht, wenn nichts mehr hinzuzufügen ist, sondern wenn nichts mehr wegzunehmen ist“ - Antoine de Saint-Exupery

Wenn Sie etwas entfernen können, das nicht erforderlich ist und kein Verständnis schafft, tun Sie dies (Lesbarkeit ist zusätzlichen Code wert).

jmoreno
quelle
Großer Aphorismus. Die Idee hat mir gefallen. +1;)
Saeed Neamati
4

Es entfernt nur Rauschen aus dem Signal. Weniger Rauschen bedeutet, dass es einfacher ist, das Signal zu empfangen, dh die Absicht des Codes zu verstehen.

Als Geräuschgenerator ist es allerdings ziemlich unbedeutend.

Ian
quelle
2
  • Es verbessert die Lesbarkeit Ihres Codes.
  • Normalerweise ist es wenig sinnvoll, diese Richtlinie zu befolgen, wenn Sie nur wenige Anweisungen verwenden

  • Es ist sinnvoller, Anweisungen mithilfe von Abschnitten in Abschnitte zu unterteilen.

Beispielsweise:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

Wenn ich mir die Klasse ansehe, kann ich sofort erkennen, dass die angegebene Klasse die System.Web-Assembly sowie unsere Plattform und unser Framework verwendet. Dies gibt mir eine grobe Vorstellung von seinen Abhängigkeiten und seiner Komplexität.

Sie können dann noch einen Schritt weiter gehen und die Anweisungen ordnen, aber ich denke, dass die Verwendung von Anweisungen dadurch weniger lesbar wird, daher würde ich dies nicht empfehlen.

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
CodeART
quelle