Нашел описание, почему рекомендуют for(..;..;++iterator)

Всё что связано с программированием на С++
Ответить
Diatlo
c7i.team
Сообщения: 251
Зарегистрирован: Пт ноя 06, 2009 6:04 am

Нашел описание, почему рекомендуют for(..;..;++iterator)

Сообщение Diatlo » Ср апр 09, 2014 3:17 pm

вместо for(..;..;iterator++)

http://habrahabr.ru/company/pvs-studio/blog/113661/

P.S. Гмм, а интересный прием в комментах с if ( 3 == x) вместо if (x==3), случайно ошибку не сделаешь if (x=3).
Помнится, я его где-то видел (да-да, это старо и избито, но в с++ я нуб =).

Vant
c7i.team
Сообщения: 179
Зарегистрирован: Вс дек 05, 2010 4:22 am

Re: Нашел описание, почему рекомендуют for(..;..;++iterator)

Сообщение Vant » Ср апр 09, 2014 7:46 pm

Я выбрал «средний компилятор» и создал тестовый проект для Visual Studio 2008.
Выбор настораживает.
if ( 3 == x) вместо if (x==3)
Ди, у нас в коде сервера это сплошь и рядом встречается. Не могу сказать что это красиво и правильно, но как прием имеет место быть, да.

Ммм... я то ли на наш общий фтп, то ли еще куда, но в наш общий доступ кидал книгу, откуда этот прием по-видимому и был взят.

upd:

Кстати есть еще распространенная бага - if( x |= 3 ) вместо if( x != 3 )

Vant
c7i.team
Сообщения: 179
Зарегистрирован: Вс дек 05, 2010 4:22 am

Re: Нашел описание, почему рекомендуют for(..;..;++iterator)

Сообщение Vant » Чт апр 10, 2014 10:05 am

Нашел.

ВЕРЕВКА ДОСТАТОЧНОЙ ДЛИНЫ, ЧТОБЫ… ВЫСТРЕЛИТЬ СЕБЕ В НОГУ Правила программирования на Си и Си++ Ален И. Голуб
Я читал предложение поручать компилятору поиск небрежных присваиваний (когда вы на самом деле подразумевали сравнение) просто размещая константы в левой части. Например, следующий фрагмент даст ошибку при компиляции, если вы используете = вместо ==:

#define MAX 100
// ...
if ( MAX == x )
// ...
В этой идее есть достоинства, но я нахожу, что такой код труднее читается.

Ответить