Есть ли какие-то преимущества в удалении неиспользуемых операторов использования в проекте VS?

21

Есть ли какие-либо преимущества в удалении неиспользуемых операторов using в проекте VS (например, это можно сделать с помощью Resharper), или VS автоматически позаботится об этом при сборке / развертывании?

Б. Клэй Шеннон
источник
1
Создается впечатление, что вы спрашивали о removing unused references(DLL) и все ответы о removing unused using statements.
Разван Флавиус Панда
@ RăzvanPanda: Нет, это будет с помощью инструкций; Мне придется воспользоваться, если вы можете сделать последнее с R # - это тоже будет приятно низкая температура.
Б. Клэй Шеннон
Хорошо, исправляя формулировку, чтобы соответствовать смыслу.
Разван Флавиус Панда
1
Вы можете удалить неиспользуемые ссылки на DLL с помощью последней версии R #, но важно быть осторожным с динамическими ссылками на DLL, иначе они могут сломаться во время выполнения.
Разван Флавиус Панда

Ответы:

23

Там нет никаких преимуществ производительности, если это то, что вы имеете в виду.

Все ссылки в сборке полностью квалифицированы; компилятор просто использует ссылки, которые вы предоставляете в своем коде, для полной квалификации идентификаторов, поэтому единственное влияние неиспользуемых ссылок в вашем исходном коде - это небольшое снижение читабельности (почему эта ссылка здесь?) и тривиальное увеличение времени компиляции.

Другими словами, сгенерированный IL является точно таким же, независимо от того, удаляете ли вы неиспользуемые ссылки или нет.

Роберт Харви
источник
Может быть косвенная выгода от удаления неиспользованных Использований. Если это, в свою очередь, позволяет удалить из решения одну или несколько ссылок на внешние библиотеки DLL, это может повысить размер развертывания приложения и / или время запуска.
Вейр
1
Сгенерированный IL не изменится, если вы удалите использование, поэтому я не вижу, как это повлияет.
Роберт Харви
True: IL не изменится, если вы добавите неиспользуемые usingссылки s или DLL ( Reference Includeэлемент файла MSBuild, /reference:аргумент CSC). Я имел в виду: удалить неиспользованные usings из проекта веб-приложения. Это были единственные строки кода, требующие включения нескольких ссылок на DLL, так что теперь удалите их. Как вы говорите, сборка происходит быстрее, особенно если ссылки были UNC-путями (CSC проверяет все ссылочные пути). Trivial win 2: скорость CI (сценарии захватывают все ссылочные библиотеки DLL) улучшается по мере того, как копируется меньше файлов, например, с сервера управления исходным кодом, чтобы построить сервер для публикации сервера на серверах приложений.
Вейр
Более короткий код - более читаемый код. Меньше значит больше - это выгода, и по этой причине это стоит делать.
niico
24

Да, я могу думать о двух основных преимуществах:

  1. Помимо своей основной функциональной цели (то есть для уменьшения многословности кода), список операторов «Using» в верхней части файла кода может сообщить будущим читателям (особенно тем, у которых нет Resharper), какие пространства имен (или, по крайней мере, были ) имеют отношение к этому файлу кода. , Если вы активно сокращаете этот список, он может действовать как лучший механизм сигнализации.
  2. Удаление неиспользуемых пространств имен уменьшит число кандидатов на автозаполнение в текстовом редакторе по мере ввода текста. Если вы вообще полагаетесь на списки автозаполнения, это поможет вам оставаться «на прямой и узкой» и даже может увеличить скорость набора текста, поскольку вы сможете найти своего предполагаемого кандидата на автозаполнение чуть быстрее.
Джим Г.
источник
1
Ах, очень хорошие моменты, особенно № 2!
Б. Клэй Шеннон
0

Удаление неиспользуемого кода - это просто дополнительный багаж, и его трудно измерить.

  • Удаление неиспользуемого кода, сокращение времени компиляции, я работаю над проектом, который занимает где-то от 15 до 20 минут, есть тонны неиспользуемого кода. Исключение неиспользуемого кода сократило время компиляции до ~ 7 минут. Это делает различие, когда в команде много разработчиков, и это экономит время для быстрого создания и тестирования.

  • Если вы автоматизировали сборку и юнит-тесты, теперь вы удалили ненужные юнит-тесты. опять же, это сокращенное время, необходимое для запуска модульных тестов. Просто увеличил эффективность вашего процесса управления Continuous Build.

    • Неиспользованный код приводит к большему отпечатку ваших двоичных файлов. Наличие меньшего отпечатка кода уменьшит время, необходимое для начальной загрузки / запуска. Хотя выгоды могут быть очень скудными и субъективными.
Betnag
источник
4
вопрос не о неиспользованном коде в целом, а о неиспользованных ссылках
gnat
... см. Как ответить : « Внимательно прочитайте вопрос . Что, в частности , задает вопрос? Убедитесь, что ваш ответ обеспечивает это - или жизнеспособную альтернативу ...»
комнат