次の方法で共有


Почему не выдаются предупреждения на неиспользуемые директивы using?

Как я уже говорил ранее, мы пытаемся использовать предупреждения только тогда, когда можем с уверенностью сказать, что код является некорректным, вводящим в заблуждение или бесполезным. Одна из причин, почему мы пытаемся избежать ложных предупреждений, состоит в том, что не хотим заставлять пользователей делать что-либо: исправлять код и вносить в него ошибки только для устранения предупреждений. Другая причина состоит в том, что поскольку многие люди компилируют с установленным флагом «Трактовать предупреждения как ошибки» (warnings are errors), мы не хотим приводить к множеству ненужных ошибок сборки проекта, при которых предупреждения будут нежелательными.

Неиспользуемая директива using явно не относится к «поломкам» и скорее всего не вводит никого в заблуждение. Хотя она и бесполезна. Почему не выдавать предупреждение на это, чтобы вы могли убрать ненужные директивы из своей программы?

Предположим, мы будем выдавать предупреждение на неиспользуемые директивы using. Предположим, у вас выставлен флаг «Трактовать предупреждения как ошибки». И предположим, вы создаете новый консольный проект в Visual Studio. Мы генерируем для вас следующий код:

using System;
using System.Text;
using System.Linq;

class Program
{
  static void Main(string[] arguments)
  {
  }
}

… который не компилируется. Что лучше, генерировать некомпилируемый код или убрать директивы using и заставлять вас писать “using System;” при первой попытке использования Console.WriteLine?

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

Оригинал статьи