Учитывая другие преимущества, действительно ли ключевое слово «auto» помогает упростить отладку в C ++? - PullRequest
0 голосов
/ 05 октября 2018

Многие люди защищают 'auto', утверждая, что это помогает им быстрее предотвращать ввод очень длинных имен типов и помогает сделать ваш код более свободным от помех. Но я считаю, что это требует значительных затрат при отладке.По крайней мере, для меня явное указание типа возвращаемого значения, такого как 'int', 'char', 'string', etc., гораздо полезнее, чем скрывать все под ковром с помощью загадочного ключевого слова 'auto', а затем пытаться выяснить причину и отладку во время отладки, когда ваш код уже слишком усложнился.,Синтаксис 'typedef', кажется, на самом деле более выгоден, предлагая преимущества 'auto' с некоторыми определенными значениями, чтобы можно было легко ссылаться и быстро определять значение использования в типе возврата ... Как это 'auto' подробнееполезно, чем использовать 'typedef'?Что было бы эффективным подрывом утверждения о том, что 'auto' не выгодно во время отладки?

1 Ответ

0 голосов
/ 05 октября 2018

Если оставить в стороне тот факт, что существуют типы, которые не могут быть названы (например, тип замыкания) или могут быть названы только с громоздким, повторяющимся и (следовательно) подверженным ошибкам decltype, использование auto позволяетупущение нерелевантной или бесполезной информации, которая в противном случае поглощает часть внимания читателя.

const auto c=mapping.key_comp();
const typename decltype(mapping)::key_compare c=mapping.key_comp();

Какую информацию добавляет вторая строка выше той, которая указана первой?

using vvi=typename std::vector<std::vector<int>>::iterator;
const vvi e=vec.end(),b=std::lower_bound(vec.begin(),e,x);
for(vvi i=b;i!=e;++i) // ...

typedef-name , подобное этому, должно быть введено в каждую функцию, которая его использует (более одного раза), предлагая внимательному читателю изучить каждый экземпляр, чтобы проверить их эквивалентность, или его следует поместить в более крупную область видимости.(и часто это другой файл!), который затем загрязняет его бессмысленное имя.

Этот вид шума не не мешает читать код, конечно, но он замедляет процесс, такойчто любой крайний срок будет уменьшать понимание, что, в свою очередь, повредит отладке.

...