たとえば、私はほとんど必要ありません:
using System.Text;
しかし、デフォルトでは常にそこにあります。コードに不要な sing directives が含まれている場合、アプリケーションはより多くのメモリを使用すると思われます。しかし、私が知っておくべきことは他にありますか?
また、同じusingディレクティブが1つのファイルとほとんど/すべてのファイルで使用されている場合、それはまったく違いがありますか?
編集:この質問は、オブジェクトがスコープから外れたときにリソースを管理できるように設計された ステートメントを使用 と呼ばれる無関係な概念に関するものではないことに注意してください。その IDisposable.Dispose メソッドが呼び出されます。 C#での「使用」の使用 。を参照してください
プログラムを実行しても何も変わりません。必要なものはすべてオンデマンドでロードされます。そのため、そのusingステートメントがある場合でも、その名前空間/アセンブリで実際に型を使用しない限り、usingステートメントが関連付けられているアセンブリは読み込まれません。
主に、個人的な好みのためにクリーンアップするだけです。
areコーディング設定以外に、未使用のusing/s/namespacesを削除するいくつかの理由があります:
未使用の名前空間を削除することwo n'tすること:
結果のアセンブリは、未使用の使用を削除しても削除しなくても同じです。
コードの清潔さ は 重要。
余分な使用を見ると、コードが維持されていない可能性があり、browfieldパス上にあると感じるようになります。本質的に、未使用のusingステートメントを見ると、脳の後ろに小さな黄色い旗が上がり、「注意して進めてください」と言ってきます。そして、量産コードを読むことは決してあなたにその感覚を与えるべきではありません。
そのため、使用をクリーンアップしてください。ずさんなことしないでください。自信を刺激します。コードをきれいにします。別の開発者にあたたかいあいまいな感じを与えます。
using
に対応するILコンストラクトはありません。したがって、using
ステートメントは、アプリケーションメモリを生成しません。コードやデータは生成されないためです。
Using
は、短い型名を完全修飾型名に解決する目的でのみコンパイル時に使用されます。したがって、不必要なusing
が持つ可能性のある唯一の悪影響は、コンパイル時間を少し遅くし、コンパイル中にもう少しメモリを消費することです。しかし、私はそれを心配しません。
したがって、必要のないusing
ステートメントを使用することによる唯一の本当の悪影響は、インテリセンスにあります。入力中の補完候補のリストが増えるためです。
名前空間内の(未使用の)クラスのようにクラスを呼び出すと、名前の衝突が発生する場合があります。 System.Textの場合、「Encoder」という名前のクラスを定義すると問題が発生します。
とにかく、これは通常小さな問題であり、コンパイラによって検出されます。
余分なusing
ディレクティブを残すことは問題ありません。それらを削除することには少しの価値がありますが、それほどではありません。たとえば、IntelliSenseの補完リストが短くなり、ナビゲートしやすくなります。
コンパイルされたアセンブリは、無関係なusing
ディレクティブの影響を受けません。
時々、それらを#region
の中に入れて、折りたたんだままにします。これにより、ファイルの表示が少しきれいになります。 IMO、これは#region
の数少ない優れた用途の1つです。
アプリケーションはこれ以上メモリを使用しません。コンパイラがコードファイルで使用するクラスを見つけるために。それは本当にきれいでないことを超えて本当に痛いことはありません。
主に個人的な好みです。私は自分でそれらをクリーンアップします(Resharperは、不要なステートメントを使用している場合に私に伝えるのに良い仕事をしています)。
コンパイルにかかる時間を短縮できるかもしれませんが、最近のコンピューターとコンパイラの速度では、目に見えるほどの影響はありません。
コードをクリーンに維持する場合は、使用されていないusing
ステートメントをファイルから削除する必要があります。コードを理解する必要がある共同チームで作業し、すべてのコードを維持する必要があると考え、コードを減らす=作業を減らすと、メリットは非常に明確になります。メリットは長期的です。
Usingステートメントを使用すると、使用する型を限定できなくなります。私は個人的にそれらをきれいにするのが好きです。実際には、locメトリックの使用方法によって異なります
それらは単にショートカットとして使用されます。たとえば、使用するシステムがない場合は、毎回System.Int32を記述する必要があります。上に。
未使用のものを削除すると、コードがきれいに見えるようになります。
実際に使用する名前空間のみを持つことで、コードを文書化しておくことができます。
検索ツールを使用して、コードのどの部分が互いに呼び出しているかを簡単に見つけることができます。
未使用のネームスペースがある場合、検索を実行するときに何も意味しません。
アプリケーションのどの部分が同じデータに何らかの方法でアクセスしているのかを常に尋ねられるため、現在ネームスペースのクリーンアップに取り組んでいます。
名前空間で区切られたデータアクセスにより、どの部分がどの方法でデータにアクセスしているのかがわかります。データベースを介して直接およびWebサービスを介して間接的に。
これを一度に行う簡単な方法は考えられません。
コードを(開発者にとって)ブラックボックスにしたいだけであれば、問題ありません。しかし、長期にわたって維持する必要がある場合、他のすべてのコードと同様に貴重なドキュメントです。
「using」ステートメントは、識別子の名前を修飾するための単なるヘルパーであるため、パフォーマンスには影響しません。したがって、System.IO.Path.Combine(...)と入力する代わりに、単にPath.Combine(...)と入力できます。 System.IOを使用。
コンパイラは、プロジェクトをビルドするときにすべてを最適化するために多くの作業を行うことを忘れないでください。それを使用することは多くの場所で使用されます。1をコンパイルすると、別のことを行うべきではありません。