Подтвердить что ты не робот

Почему вы должны удалить ненужные директивы С#?

Например, мне редко нужно:

using System.Text;

но он всегда там по умолчанию. Я предполагаю, что приложение будет использовать больше памяти, если ваш код содержит ненужные с использованием директив. Но есть ли что-нибудь еще, о чем я должен знать?

Кроме того, имеет ли значение какое-либо значение, если одна и та же директива using используется только в одном файле против большинства/всех файлов?


Изменить: обратите внимание, что этот вопрос касается не связанной концепции, называемой с использованием инструкции, предназначенной для управления ресурсами, гарантируя, что когда объект выходит за рамки, вызывается метод IDisposable.Dispose. См. Использование "использования" на С#.

4b9b3361

Ответ 1

При запуске вашей программы ничего не изменится. Все, что нужно, загружается по требованию. Поэтому, даже если у вас есть этот оператор using, если вы фактически не используете тип в этом пространстве имен/сборке, сборка, которая использует оператор, коррелирует с не будет загружена.

В основном, это просто для очистки личных предпочтений.

Ответ 2

Там есть несколько причин для удаления неиспользуемых (или имен) пространств имен, помимо предпочтений кодирования:

  • удаление неиспользуемых клаузулов в проекте, может сделать компиляцию быстрее, потому что у компилятора меньше имен пространство для поиска типов для решения. (это особенно актуально для С# 3.0 из-за методов расширения, где компилятор должен искать все пространства имен для методов расширения для возможных лучших совпадений, вывода типового типа и лямбда-выражений с использованием родовых типов).
  • может потенциально помочь избежать столкновения имен в будущих сборках, когда новые типы добавляются к неиспользуемым пространствам имен, которые имеют то же имя, что и некоторые типы в используемых пространствах имен.
  • уменьшит количество элементов в списке автозаполнения редактора при кодировании, что приведет к более быстрому набору (в С# 3.0 это также может уменьшить список показанных методов расширения)

Что удаляет неиспользуемые пространства имен не будет:

  • каким-либо образом изменить выход компилятора.
  • каким-либо образом изменить выполнение скомпилированной программы (более быстрая загрузка или более высокая производительность).

Результирующая сборка будет такой же или без использования неиспользованных (ых) удалений.

Ответ 3

Чистота кода важна.

У каждого возникает ощущение, что код может быть не сохранен и на пути бровей, когда вы видите лишнее использование. По сути, когда я вижу некоторые неиспользованные заявления, в моем мозгу появляется желтый желтый флаг, который говорит мне "действовать осторожно". И чтение производственного кода никогда не должно давать вам этого чувства.

Так очистите свои привычки. Не будьте неряшливы. Внушайте уверенность. Сделайте свой код симпатичным. Дайте другому дэву это теплое нечеткое чувство.

Ответ 4

Нет конструкции IL, которая соответствует using. Таким образом, операторы using не увеличивают вашу память приложения, так как нет кода или данных, которые сгенерированы для него.

using используется во время компиляции только для целей разрешения имен коротких типов на полностью квалифицированные имена типов. Таким образом, единственный отрицательный эффект, ненужный using, может немного замедлить время компиляции и в процессе компиляции получить немного больше памяти. Я бы не беспокоился об этом, хотя.

Таким образом, единственный реальный отрицательный эффект от наличия операторов using, которые вам не нужны, - это intellisense, так как список возможных совпадений для завершения при вводе увеличивается.

Ответ 5

У вас могут быть конфликты имен, если вы вызываете свои классы как (неиспользуемые) классы в пространстве имен. В случае System.Text у вас возникнет проблема, если вы определите класс с именем "Encoder".

В любом случае это обычно является незначительной проблемой и обнаруживается компилятором.

Ответ 6

Ваше приложение не будет использовать больше памяти. Его для компилятора найти классы, которые вы используете в файлах кода. Это действительно не повредит, если не быть чистым.

Ответ 7

Его личное предпочтение в основном. Я очищаю их сам (Resharper делает хорошую работу, чтобы сказать мне, когда theres unneeded с использованием утверждений).

Можно сказать, что это может сократить время для компиляции, но с компьютерами и скоростями компилятора в наши дни это просто не повлияло бы на заметное влияние.

Ответ 8

Оставлять дополнительные директивы using в порядке. Есть немного смысла в их удалении, но не так много. Например, он делает мои списки завершения IntelliSense короче и, следовательно, легче ориентироваться.

Скомпилированные сборки не затрагиваются внешними директивами using.

Иногда я помещаю их внутри #region и оставляю его скомпенсированным; это делает просмотр файла немного чище. IMO, это одно из немногих хороших применений #region.

Ответ 9

Они просто используются как ярлык. Например, вам нужно написать: System.Int32 каждый раз, если вы не использовали Систему; сверху.

Удаление неиспользуемых только делает ваш код более чистым.

Ответ 10

Оператор using просто не позволяет вам определять типы, которые вы используете. Мне лично нравится их чистить. На самом деле это зависит от того, как используется метка loc.

Ответ 11

Наличие только тех пространств имен, которые вы фактически используете, позволяет вам документировать ваш код.

Вы можете легко найти, какие части вашего кода звонят друг другу с помощью любого инструмента поиска.

Если у вас неиспользуемые пространства имен это ничего не значит, при запуске поиска.

Сейчас я работаю над очисткой пространства имен, потому что меня постоянно спрашивают, какие части приложения обращаются к тем же данным так или иначе.

Я знаю, какие части каждый раз обращаются к данным из-за того, что доступ к данным разделяется пространствами имен, например. напрямую через базу данных и непосредственно через веб-службу.

Я не могу придумать более простой способ сделать это все сразу.

Если вы просто хотите, чтобы ваш код был черным ящиком (для разработчиков), то да, это не имеет значения. Но если вам нужно поддерживать его со временем, это ценная документация, как и весь другой код.

Ответ 12

Оператор 'using' не влияет на производительность, поскольку он просто помощник в определении имен ваших идентификаторов. Поэтому вместо того, чтобы печатать, System.IO.Path.Combine(...), вы можете просто набрать Path.Combine(...), если у вас есть System.IO.

Ответ 13

Не забывайте, что компилятор выполняет большую работу по оптимизации всего, когда вы строите свой проект. Использование этого используется во многих местах или 1 не должно делать другого скомпилированного.