29 августа 2014 г.

Частая ошибка №10: Накопление предупреждений компилятора. Перевод.

Оглавление

Это относится не только к C#, но в C# это особенно актуально, по сути вы лишаетесь части преимуществ строгой проверки типов, предлагаемых компилятором C#.
Предупреждения генерируются по какой-то причине. В то время как ошибки компилятора указывают на дефект в вашем коде, многие предупреждения делают тоже самое. Разница между ними в том, что в случае предупреждения, компилятор не имеет проблем с инструкциями в вашем коде. Тем не менее, он находит ваш код подозрительным, и существует вероятность что ваш код не совсем точно отражает ваши намерения.
Распространенный простой пример: вы решили изменить алгоритм так, чтобы исключить использование переменной, но забыли удалить само ее объявление. Программа будет отлично работать, но компилятор пометит бесполезное объявление переменной. Тот факт, что программа отлично работает может стать причиной, по которой программисты могут пренебречь необходимостью исправить такое предупреждение. Более того, можно воспользоваться возможностью Visual Studio чтобы визуально скрыть все предупреждения в окне "Error List", так, чтобы сосредоточиться только на ошибках. Это не займет много времени, до тех пока не накопятся десятки предупреждений, все из которых были благополучно проигнорированы (или хуже того - скрыты).

Но если вы проигнорируете такого рода предупреждения, рано или поздно, что-то вроде этого вполне может появиться в вашем коде:


При той скорости, с которой Intellisense позволяет вам писать код, эта ошибка может быть не столь невероятной как кажется.
Теперь у вас есть серьезная ошибка в программе (хотя компилятор только пометил это как предупреждение, по причинам описанным выше), и в зависимости от сложности программы, вы можете потратить много времени разыскивая ее. Если бы вы сразу обратили внимание на это - смогли бы избежать проблемы с помощью небольшого исправления.

Запомните, C# компилятор дает вам много полезной информации о надежности вашего кода...если вы слушаете. Не игнорируйте предупреждения. Обычно, они требуют несколько секунд для исправления, но это может сохранить вам гораздо больше времени. Приучите себя ожидать окно Visual Studio "Error List" которое отображает "0 Errors, 0 Warnings", так чтобы любые предупреждения были для вас достаточно “неудобными” чтобы сразу ими заняться.

Конечно, есть исключения из каждого правила. Т.е. может быть ситуация, когда ваш код будет выглядеть подозрительно для компилятора, хотя это именно такой код как вы и хотели. В таких редких случаях, используйте #pragma warning disable [id предупреждения] вокруг того блока кода, который вызывает предупреждение с этим id. Это поможет подавить предупреждение, но только это, так что вы по прежнему сможете получать уведомления о других предупреждениях.


Заключение

C# - это мощный и гибкий язык со множеством механизмов и парадигм, которым могут значительно улучшить производительность. Как и с любым другим программным средством или языком, ограниченное понимание или оценка его возможностей может иногда приносить больше вреда чем пользы. Как говорится: "знаю достаточно, чтобы наломать дров".

Знакомство с ключевыми нюансами C#, такими как описаны в этой статье (но ни в коем случае не ограничиваясь только ими), поможет оптимизировать использование языка, избегая наиболее распространенных ошибок.

Комментариев нет:

Отправить комментарий