Здравствуйте! Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:
for(int i=0, stepen=0;i<len;++i)
{
stepen *= 8;
}
Это удобно, т.к. переменная объявляется непосредственно там где будет использоваться, область видимости ограничена циклом, что тоже является плюсом. Использую стандарт ISO/IEC 9899:TC2 (Visual Studio 2008), но в стандарте этот случай не упоминается (может быть не там смотрел стр 136 в самой книге или 148 в pdf ).
A>for(int i=0, stepen=0;i<len;++i)
A>{
A> stepen *= 8;
A>}
A>
Почему бы и нет, очень даже правильно.
ИМХО эти все читабельности фигня какая то надуманная.
Если код написан с нормальным форматированием то ИМХО значения не имеет будет ли это кемл или с подчеркиванием.
Мне вот лично пофигу как читать, но писать предпочитаю в стиле библиотек stl, boost.
А то бывает иногда в кодстайле до маразмов доходит, встерчался с такими проектами.
A>>for(int i=0, stepen=0;i<len;++i)
A>>{
A>> stepen *= 8;
A>>}
A>>
N>Почему бы и нет, очень даже правильно. N>ИМХО эти все читабельности фигня какая то надуманная. N>Если код написан с нормальным форматированием то ИМХО значения не имеет будет ли это кемл или с подчеркиванием. N>Мне вот лично пофигу как читать, но писать предпочитаю в стиле библиотек stl, boost. N>А то бывает иногда в кодстайле до маразмов доходит, встерчался с такими проектами.
Спасибо!
Здравствуйте, Andatr, Вы писали:
A>Здравствуйте! Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:
A>
A>for(int i=0, stepen=0;i<len;++i)
A>{
A> stepen *= 8;
A>}
A>
кстати, нужно помнить, что переполнение знаковых неопределенно
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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! Вот так неожиданность! И ищи потом, на каком этапе вычислений данные превращаются в винегрет! А искать можно долго, и ошибки возникают даже в полностью отлаженных программах, стоит только скормить им непредвиденную последовательность входных данных.
Здравствуйте, 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;
}
впрочем, у вас, быть может, принят другой корпоративный стиль оформления кода...
Здравствуйте, nen777w, Вы писали:
N>Мне вот лично пофигу как читать, но писать предпочитаю в стиле библиотек stl, boost. N>А то бывает иногда в кодстайле до маразмов доходит, встерчался с такими проектами.
[Оффтопик]
Тоже предпочитаю писать в стиле библиотек STL и Boost и не настаиваю на использовании этого стиля другими, но все же когда в коде перемешаны разные стили, выглядит это как книга, в которой для каждого слова выбирается свой шрифт более или менее случайным образом. Есть мнение, что использование авторами разных библиотек разных стилей помогает отличить имена одной библиотеки от имен другой, но ведь программисту и гибриды приходится использовать:
Здравствуйте, 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
Здравствуйте, 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>
Ценю Вашу критику. Все именно так как Вы написали — неудачное название переменной и бессмысленное умножение на ноль. Благодарен.
Здравствуйте, VladFein, Вы писали:
VF>Здравствуйте, Andatr, Вы писали:
A>>...в плане читабельности кода...
A>>
A>>for(int i=0, stepen=0;i<len;++i)
A>>
VF>...можно заменить len на dlina
Действительно, если я дал имя переменной используя транслитерацию, то и для объявления второй переменной должен бы использовать транслит — так понятнее. dlina смотрится лучше чем len.
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>
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, Andatr, Вы писали: A>Здравствуйте! Будет ли корректным (в плане читабельности кода,в плане стандарта в функциональном плане код работает) использование переменной stepen таким образом:
я обычно так и стараюсь делать. другое дело, что так достаточно редко бывает, но минимизировать область видимости всегда хорошая идея