1.1, dry (?), 00:27, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
по этой теме (и не только) есть замечательная книга
Ален Голуб "Веревка достаточной длины, чтобы выстрелить себе в ногу"
лучше вряд ли кто-то напишет
| |
1.2, pavlinux (ok), 05:35, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
if (f()) - за это вообще половину freashmeat, sourceforge и google code по убивать надо :)
| |
1.3, pavlinux (ok), 06:52, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
a[900]; b;c;d=1 ;e=1;f; g;h;O; main(k,
l)char* *l;{g= atoi(* ++l); for(k=
0;k*k< g;b=k ++>>1) ;for(h= 0;h*h<=
g;++h); --h;c=( (h+=g>h *(h+1)) -1)>>1;
while(d <=g){ ++O;for (f=0;f< O&&d<=g
;++f)a[ b<<5|c] =d++,b+= e;for( f=0;f<O
&&d<=g; ++f)a[b <<5|c]= d++,c+= e;e= -e
;}for(c =0;c<h; ++c){ for(b=0 ;b<k;++
b){if(b <k/2)a[ b<<5|c] ^=a[(k -(b+1))
<<5|c]^= a[b<<5 |c]^=a[ (k-(b+1 ))<<5|c]
;printf( a[b<<5|c ]?"%-4d" :" " ,a[b<<5
|c]);} putchar( '\n');}} /*Hello Opennet*/
Навеяло :)
| |
1.4, Allex (?), 08:09, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>> goto необходимо использовать крайне умеренно
А нас на АСУ учили вообще его не использовать.
Доходило до смешного, когда делали охренительно здоровый алгоритм,
но никто не знал как его запрограммировать.
| |
|
|
3.11, User294 (ok), 15:01, 05/08/2008 [^] [^^] [^^^] [ответить]
| +/– |
>странно вас учили. Любой алгоритм можно запрограммировать без goto
Но иногда обходной вариант выглядит ну ооооооочень страшно.Кстати а что, вы стесняетесь и ассемблерной команды JMP тогда уж? :D
| |
|
2.9, Аноним (-), 11:03, 05/08/2008 [^] [^^] [^^^] [ответить]
| +/– |
goto нужен когда не хочется тратить процессорное время на вызов функций и есть голова на плечах, например в драйверах. Посмотрите на код libata, там этого goto от души напихано, и ничего так, работает.
| |
|
1.6, Andrew Kolchoogin (?), 09:59, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Никогда не следует переопределять значение NULL, которое всегда должно
> равняться нулю.
Вранье. NULL -- далеко не всегда 0x0. Аффтар статьи не видел Vax'ов.
| |
|
2.12, whirlwind (?), 15:07, 05/08/2008 [^] [^^] [^^^] [ответить]
| +/– |
авторы QT/KDE тоже, видимо, никогда не видели Vax'ов:
>Во-вторых, вы можете встретить три различных способа определения нулевых указателей: 0, 0L
и NULL. Значение NULL не рекомендуется использовать, так как в C оно определено как (void*)0, и такое его определение не соответствует принятому в C++. Однако все известные реализации C++ корректно определяют NULL, поэтому с этим обычно проблем не возникает. Для правильной трактовки 0 в вызовах функций с переменным числом аргументов часто использовался 0L. Но теперь это тоже уже в прошлом. И, скорее, является делом привычки. По мере перемещения кода в CVS все чаще вместо NULL будет использоваться 0.
это, правда, про С++, отсюда: http://qt.osdn.org.ua/mistakes.html
| |
|
1.7, whirlwind (?), 10:39, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>Числовых констант, как правило, следует избегать; лучше использовать #define для задания понятного имени
а гугл настойчиво не рекомендует использовать define
| |
1.15, chepuha (?), 13:54, 06/08/2008 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
агрегация зависимых устойчивых значений в консанты, как решение для платформо-независимого кода всегда будет лучшим выбором, пусть даже внутри одной программы.
Если вы решили заменить NULL на 0, то лучше всего сделать это через #define, ибо обратная замена будет очень трудоемкой.
| |
|