In der Regel werden einige using-Anweisungen oben in der Klassendatei angezeigt. Beispiel:
using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;
Aber in einem Projekt, an dem ich arbeite, sehe ich mehrmals 20 oder mehr Verwendungen / Importe in einer Klassendatei. Ist das schlechtes Design? Es scheint so, als ob Klassen, die darauf ausgelegt sind, eine Sache zu tun, sich nur auf wenige Komponenten stützen sollten.
programming-practices
Jon Raynor
quelle
quelle
using
Anweisungen. Vielleicht möchten Sie sehen, wie viele dieser 20 tatsächlich verwendet werden.using
Anweisungen verringert wird, ohne die Anzahl der Klassen erhöhen zu müssen? Bedenken Sie, dass eine zunehmende Anzahl von Klassen oder Quelldateien den Verwaltungsaufwand für den Quellcode erhöht.Antworten:
Es kann auf ein schlechtes Design hindeuten, ja. Es kann sein, dass die Klasse, die Sie betrachten, zu viele Dinge tut, aber es kann auch bedeuten, dass die Namespaces, die Sie importieren, wirklich stärker gekoppelt sind, als es die Namespace-Trennung impliziert. Dies kann an einem Überentwickeln oder einer Überabstraktion liegen, es kann sich aber auch nur um ein Design handeln, das nicht gut zur Verwendung passt.
Das heißt, es ist ein Geruch - manchmal führt es Sie zu etwas Schlimmem, und manchmal ist es nur ein falscher Alarm.
quelle
using
in einer einzelnen C # -Datei.Eine Klasse sollte nicht größer und nicht kleiner als das sein, was zur Bereitstellung einer beabsichtigten Funktion erforderlich ist.
In einer Anwendung habe ich eine Verschlüsselungsklasse, die einen Job hat: Daten verschlüsseln. Zwischen der Kernfunktionalität, der Protokollierung und der Ausnahmebehandlung benötigt die Umgebung 11 verschiedene Namespace-Importe, um diesen einen Job auszuführen.
Es fällt mir schwer, mir selbst zu sagen, dass ich Importe minimieren soll. Oder um den Erfolg meiner Klasse nur anhand der Anzahl der importierten Namespaces zu beurteilen. Ich kann dies nicht zu Recht isoliert als Hinweis auf den Erfolg einer Klasse verwenden. Importe sind für mich das Mittel zum Zweck der Klasse. Wenn der Job der Klasse genau definiert ist, kümmert sich alles andere innerhalb des unterstützenden Systems, einschließlich des Imports, um sich selbst.
quelle