Каковы преимущества ведения «чистого» списка директив using в C#?

Я знаю, что VS2008 имеет функцию удаления и сортировки для очистки с помощью директив, как и Resharper. Помимо того, что ваш код «чистый» и устраняет проблему ссылок на пространства имен, которые могут не существовать в будущем, каковы преимущества поддержания «чистого» списка директив using?

Меньше кода? Более быстрое время компиляции?

Хммм, кто-то редактировал мое название. Первоначальный был такой: «Вы одержимы удалением лишних операторов using в C#»?

Carl 25.10.2008 01:29

Я просто изменил "утверждения" на "директивы" для точности. Операторы using - это те, которые вызывают Dispose в блоке finally. Вы говорите об использовании директив.

Jon Skeet 25.10.2008 01:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
2
1 094
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

Для меня в основном все сводится к уменьшению шума (плюс радость Решарпера!).

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

Да, я просто избавляюсь от них, чтобы Решарпер был счастлив. :-)

Stewart Johnson 27.10.2008 13:44

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

Я заметил приличный выигрыш во времени компиляции несколько лет назад, когда впервые установил ReSharper (в решении для 18 проектов). С тех пор все было только для того, чтобы содержать его в чистоте.

Если у вас всегда есть только те директивы using, которые вам нужны, и они всегда должным образом отсортированы, то, когда вы дойдете до сравнения двух версий кода, вы никогда не увидите нерелевантных изменений.

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

Не совсем. Я полностью игнорирую использование блоков вверху, так как это очень много шума.

Robert C. Barth 25.10.2008 02:08

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

Jon Skeet 25.10.2008 02:26

Я не могу говорить о преимуществах времени компиляции и производительности, но вероятность конфликтов пространств имен снижается, если вы минимизируете свои объявления using. Это особенно важно, если вы используете несколько сторонних библиотек.

Нет никакого влияния на время выполнения. Это чисто время компиляции. Это потенциально влияет на следующее:

  1. Меньше шансов на конфликты пространств имен
  2. Меньше "шума" в файле кода
  3. Очень ясно, какие пространства имен и возможные типы ожидать в файле
  4. Использование меню для удаления неиспользуемых и сортировки означает большую согласованность с операторами using среди разработчиков. Меньше шансов глупых проверок, чтобы исправить это.
  1. Меньше шума.
  2. Четкое ожидание того, какие типы используются («Мой уровень пользовательского интерфейса зависит от System.Net. Вау, почему?»)
  3. Более чистые ссылки: если у вас есть минимальный набор операторов using, вы можете очистить свои ссылки. Часто я вижу, как разработчики просто добавляют ссылки в свои проекты, но никогда не удаляют их, когда они больше не нужны. Если у вас нет ничего, на что действительно нужна ссылка (а количество операторов using), очистка ссылок становится тривиальной задачей. (Зачем вам это нужно? В больших системах, которые были разложены на компоненты, это упростит ваши зависимости сборки, удалив неиспользуемые зависимости.)

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

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

Другие вопросы по теме