воскресенье, 20 июля 2025 г.

var или не var? Да будет холивар!

      Когда работал в прошлой компании, один из разработчиков ну наотрез отказывался при объявлении переменных от ключевого слова var, предпочитая явно указывать тип. Естественно, не наш метод сразу начинать ругаться, бить горшки, писать многострочные гневные или уничижительные комментарии в merge-реквестах (про грамотный процесс code review есть несколько статей на хабре, крайне рекомандую ознакомиться на досуге). Но мы немного отвлеклись от основной темы статьи. Так как используем var? Постараемся закрыть этот вопрос раз и навсегда!
     С появлением ключевого слова var появилась возможность уменьшить количество шаблонного кода и писать более компактные выражения. Напомню, что это произошло достаточно давно, аж в 2007 году и ещё в C# версии 3.0.
     Вместо явного написания громоздких типов можно писать лаконичный код:

// Вместо List<Dictionary<string, List<Tuple<int, DateTime>>>> data = GetResultData();
var data = GetResultData(); 
     
    Также var не делает переменную динамической, это всё тот же строго типизируемый код.
    Но есть и сильный аргумент против использования var. На примере кода выше разработчику, проводящему ревью, совершенно неочевидно, какой тип имеет переменная data. int? double? string? CustomInfo? Тип, получаемый из функции неочевиден и это в разы ухудшает читаемость кода.
    var — полезный инструмент, но требует дисциплины. При очевидном типе он упрощает код, при неочевидном — мешает пониманию.
    Как пример отличного применения var:

var rows = new List<string>();
    
    А вы сторонник понятного использования var? Пишите комменты, рад буду дискуссиям.
    

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

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