Переменная в инструкции for
От: Andatr Россия  
Дата: 19.08.13 09:01
Оценка:
Здравствуйте! Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:

for(int i=0, stepen=0;i<len;++i)
{
  stepen *= 8;
}

Это удобно, т.к. переменная объявляется непосредственно там где будет использоваться, область видимости ограничена циклом, что тоже является плюсом. Использую стандарт ISO/IEC 9899:TC2 (Visual Studio 2008), но в стандарте этот случай не упоминается (может быть не там смотрел стр 136 в самой книге или 148 в pdf ).
Re: Переменная в инструкции for
От: nen777w  
Дата: 19.08.13 09:49
Оценка: 3 (1)
A>
A>for(int i=0, stepen=0;i<len;++i)
A>{
A>  stepen *= 8;
A>}
A>


Почему бы и нет, очень даже правильно.
ИМХО эти все читабельности фигня какая то надуманная.
Если код написан с нормальным форматированием то ИМХО значения не имеет будет ли это кемл или с подчеркиванием.
Мне вот лично пофигу как читать, но писать предпочитаю в стиле библиотек stl, boost.
А то бывает иногда в кодстайле до маразмов доходит, встерчался с такими проектами.
Re[2]: Переменная в инструкции for
От: Andatr Россия  
Дата: 19.08.13 10:47
Оценка:
Здравствуйте, nen777w, Вы писали:

A>>
A>>for(int i=0, stepen=0;i<len;++i)
A>>{
A>>  stepen *= 8;
A>>}
A>>


N>Почему бы и нет, очень даже правильно.

N>ИМХО эти все читабельности фигня какая то надуманная.
N>Если код написан с нормальным форматированием то ИМХО значения не имеет будет ли это кемл или с подчеркиванием.
N>Мне вот лично пофигу как читать, но писать предпочитаю в стиле библиотек stl, boost.
N>А то бывает иногда в кодстайле до маразмов доходит, встерчался с такими проектами.
Спасибо!
Re: Переменная в инструкции for
От: Аноним  
Дата: 19.08.13 12:20
Оценка: 3 (1)
Здравствуйте, Andatr, Вы писали:

A>Здравствуйте! Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:


A>
A>for(int i=0, stepen=0;i<len;++i)
A>{
A>  stepen *= 8;
A>}
A>


кстати, нужно помнить, что переполнение знаковых неопределенно
Re[2]: Переменная в инструкции for
От: Andatr Россия  
Дата: 19.08.13 14:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Andatr, Вы писали:


A>>Здравствуйте! Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:


A>>
A>>for(int i=0, stepen=0;i<len;++i)
A>>{
A>>  stepen *= 8;
A>>}
A>>


А>кстати, нужно помнить, что переполнение знаковых неопределенно


Очень важное замечание! Спасибо. Цитата из журнала Хакер № 109

Обычно при переполнении наблюдается либо изменение знака числа (небольшое знаковое отрицательное превращается в большое беззнаковое), либо заворот по модулю, физическим аналогом которого могут служить обычные механические часы. Хинт: 3+11=2, а вовсе не 14! Вот так неожиданность! И ищи потом, на каком этапе вычислений данные превращаются в винегрет! А искать можно долго, и ошибки возникают даже в полностью отлаженных программах, стоит только скормить им непредвиденную последовательность входных данных.

очень важное замечание! спасибо.
Re: Переменная в инструкции for
От: B0FEE664  
Дата: 19.08.13 14:56
Оценка: 4 (2)
Здравствуйте, Andatr, Вы писали:

A> Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:


A>for(int i=0, stepen=0;i<len;++i)
A>{
A>  stepen *= 8;
A>}


В плане в плане читабельности кода всё ужасно:
1) Эта загадочная переменная stepen! Очевидно, что step — это шаг, но что такое "en" ? Есть два варианта:
— An en is a typographic unit, half of the width of an em.
— exanewton, an SI unit of force: 10^-18 newtons

посмотрев на переменную len, мы можем догадаться, что речь, таки, идёт о длине, но... что делает этот код? Этот код len раз умножает ноль на восемь! Что хотел сказать автор этим кодом — загадка...

2) отсутствуют полезные пробелы между знаками, должно быть так:
for(int i = 0, stepen = 0; i < len; ++i)
{
  stepen *= 8;
}


впрочем, у вас, быть может, принят другой корпоративный стиль оформления кода...

  Скрытый текст
PS извините
И каждый день — без права на ошибку...
Re: Переменная в инструкции for
От: VladFein США  
Дата: 19.08.13 15:03
Оценка: 3 (1) +2 :)))
Здравствуйте, Andatr, Вы писали:

A>...в плане читабельности кода...


A>
A>for(int i=0, stepen=0;i<len;++i)
A>



...можно заменить len на dlina
Re[2]: Переменная в инструкции for
От: igna Россия  
Дата: 19.08.13 15:16
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Мне вот лично пофигу как читать, но писать предпочитаю в стиле библиотек stl, boost.

N>А то бывает иногда в кодстайле до маразмов доходит, встерчался с такими проектами.

[Оффтопик]

Тоже предпочитаю писать в стиле библиотек STL и Boost и не настаиваю на использовании этого стиля другими, но все же когда в коде перемешаны разные стили, выглядит это как книга, в которой для каждого слова выбирается свой шрифт более или менее случайным образом. Есть мнение, что использование авторами разных библиотек разных стилей помогает отличить имена одной библиотеки от имен другой, но ведь программисту и гибриды приходится использовать:

convert_from_ИмяНекогоТипаИзОднойБиблиотеки_to_имя_некого_типа_из_другой_библиотеки
Re[2]: Переменная в инструкции for
От: uzhas Ниоткуда  
Дата: 19.08.13 15:16
Оценка: :)))
Здравствуйте, VladFein, Вы писали:

VF>...можно заменить len на dlina


поддерживаю
typedef int celoe;
const celoe nol = 0;
const celoe vosem = 8;
// pustaya stroka ne prosto tak i kommentariy ne prosto tak, a dlya chitabelnosti!
for(celoe schetchik=nol, stepen=nol;schetchik<dlina;++schetchik)
{
  //kak ni umnozhay, a budet nol, nu a vdrug poluchim ne nol
  stepen *= vosem;
}
//tut mogla byt' vasha reklama
Re[2]: Переменная в инструкции for
От: Andatr Россия  
Дата: 19.08.13 18:32
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, Andatr, Вы писали:


A>> Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:


BFE>
A>>for(int i=0, stepen=0;i<len;++i)
A>>{
A>>  stepen *= 8;
A>>}
BFE>


BFE>В плане в плане читабельности кода всё ужасно:

BFE>1) Эта загадочная переменная stepen! Очевидно, что step — это шаг, но что такое "en" ? Есть два варианта:
BFE>- An en is a typographic unit, half of the width of an em.
BFE>- exanewton, an SI unit of force: 10^-18 newtons

BFE>посмотрев на переменную len, мы можем догадаться, что речь, таки, идёт о длине, но... что делает этот код? Этот код len раз умножает ноль на восемь! Что хотел сказать автор этим кодом — загадка...


BFE>2) отсутствуют полезные пробелы между знаками, должно быть так:

BFE>
BFE>for(int i = 0, stepen = 0; i < len; ++i)
BFE>{
BFE>  stepen *= 8;
BFE>}
BFE>


Ценю Вашу критику. Все именно так как Вы написали — неудачное название переменной и бессмысленное умножение на ноль. Благодарен.
Re[2]: Переменная в инструкции for
От: Andatr Россия  
Дата: 19.08.13 18:38
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Здравствуйте, Andatr, Вы писали:


A>>...в плане читабельности кода...


A>>
A>>for(int i=0, stepen=0;i<len;++i)
A>>



VF>...можно заменить len на dlina

Действительно, если я дал имя переменной используя транслитерацию, то и для объявления второй переменной должен бы использовать транслит — так понятнее. dlina смотрится лучше чем len.
Re[3]: Переменная в инструкции for
От: Ops Россия  
Дата: 19.08.13 21:53
Оценка:
Здравствуйте, uzhas, Вы писали:

U>поддерживаю

U>
U>typedef int celoe;
U>const celoe nol = 0;
U>const celoe vosem = 8;
U>// pustaya stroka ne prosto tak i kommentariy ne prosto tak, a dlya chitabelnosti!
U>for(celoe schetchik=nol, stepen=nol;schetchik<dlina;++schetchik)
U>{
U>  //kak ni umnozhay, a budet nol, nu a vdrug poluchim ne nol
U>  stepen *= vosem;
U>}
U>//tut mogla byt' vasha reklama
U>
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Переменная в инструкции for
От: __kot2  
Дата: 20.08.13 18:12
Оценка: 2 (1)
Здравствуйте, Andatr, Вы писали:
A>Здравствуйте! Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:
я обычно так и стараюсь делать. другое дело, что так достаточно редко бывает, но минимизировать область видимости всегда хорошая идея
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.