C#: Удалять или не удалять неиспользуемые using директивы

ru-RU | создано: 30.09.2015 | опубликовано: 30.09.2015 | обновлено: 01.01.2018 | просмотров за всё время: 4198

Особых споров по этому поводу нет, но дабы расставить все точки на "Ё" поговорим на эту тему.

Есть несколько причин для удаления неиспользованных директив using:

1. Процесс компиляции

Удаление позволяет ускорить процесс компиляции. Если вы удалите неиспользованные директивы using, то проект (решение) сможет быстрее компилироваться за счет того, что компилятору не потребуется искать используемые namespace'ы в приложении в неиспользуемых сборках. Это особенно важно для C# 3.0, потому что для методов расширения компилятор должен искать во всех сборках для возможно лучшего соответствия обобщенным (generic type) интерфейсам и лямбда выражениях (lambda expressions) включая обобщенные типы (generic types).

2. Совпадения названий классов

Исключить потенциальные совпадения имен namespace. В больших проектах зачастую случается так, что названия некоторых классов в разных сборках совпадают. Да и наименование своих свобственных классов часто напрямую конкурирует с названием классов из FCL (Framework Class Library) опять же если придерживаться правил именования классов (General Naming Conventions). Так вот удаление неиспользованных директив, помогает исключить возможное совпадения.

3. Списки автозавершений

При удалении неиспользованных директив using списки автозавершений (autocomplete intellisense) значительно уменьшаются. Да и перид их формирования и выпадения существенно сокращается. Также чуствуется разница при поиске совпадений при наборе символов. Опять же, это особенно важно для C# 3.0.

Стоит также уточнить, что данные факты в большинстве своем приемлемы для разработки в среде Visual Studio, хотя и не стоит отрицать тот факт, что и другие IDE работаю по сходному с Visual Studio принципу. Также, хочу отметить, что речь идет о производительности в IDE для больших проектов.

Удаление неиспользованных директив ни коим образом не повлияет на:

  • Работу компилятора - скорость компиляции, качество, количество и т.д., потому что сборки необходимые для компиляции загружаются по требованию (on-demand).
  • На работоспособность программы (приложения) - скорость работы, скорость загрузки, производительность и т.д.

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