Использование auto
Минусы auto
Основная проблема auto — это вывод типа. Программист может ошибиться — из-за сложной конструкции auto выведет не тот тип, который он предполагал, но это уже проблема компетенций конкретного разработчика. Ошибки с этим могут быть также и в самых простых ситуациях:
Тип неясен, когда читаете код на GitHub или в редакторе, который не поддерживает интеллектуальные подсказки
Плюсы auto
Имена типов C++ могут быть длинными и громоздкими, особенно, когда они связаны с шаблонами, итераторами или пространствами имен. Auto повышает читаемость кода, уменьшает его количество:
Auto предотвращает переписывание кода (например, если поменялся тип возвращаемого значения у какой-нибудь функции).
Все современные IDE поддерживают интеллектуальные подсказки (врядли кто-то пишет код в notepad). Наводите — узнаёте тип.
Auto в Unreal Engine
Возникло обсуждение по поводу корректности использования auto в контексте данной информации на странице Coding Standard:
You shouldn't use
auto
in C++ code, although a few exceptions are listed below. Always be explicit about the type you're initializing.
Данная страница — это набор рекомендаций по написанию кода. Документом это к сожалению назвать нельзя. Для сравнения рекомендую посмотреть как сделан такой документ у google.
Вопросы могут возникнуть если вы делаете pull-request в код движка. В процессе ревью вас могут попросить заменить auto на полное имя типа. Но поиск по коду движка выдает 16529 вхождений auto. Вывод очевиден — разработчики движка сами не особо следуют своему правилу:
На проектах я использую auto в местах, где нет никаких сложных вычислений типа. Он везде очевиден. Поэтому использование auto более чем уместно.
Большинство имен переменных содержит информацию о типе
В некоторых конструкциях, например, Cast, тип является параметром шаблона. В данном случае тип очевиден также:
Резюме
Не вижу причин не использовать auto.
Делать надо это аккуратно. Если не уверены по поводу типа — пишите явно.
Не нравится auto — используете полное имя типа. Это тоже отлично (=
Дополнительно про использование auto можно почитать в документации google.
Дополнительная информация имеется в статье Герба Саттера "Almost Always Auto"
Last updated
Was this helpful?