Почему не выдаются предупреждения на неиспользуемые директивы 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?
Оба варианта не удобны для пользователя. Вот поэтому мы и не будем добавлять такую возможность.