Общеизвестно, что сопровождение приложения отнимает значительную часть времени программиста. Частично это происходит из-за использования платформозависимых и нестандартных особенностей, но в большей степени - из-за плохого стиля программирования. В статье (http://www.ibm.com/developerworks/ru/library/au-hook_duttaC/...) дается несколько советов, которые помогают сберечь время, требуемое для сопровождения кода. Следование этим советам сделает сопровождение приложений командой разработчиков более простым.URL: http://www.ibm.com/developerworks/ru/library/au-hook_duttaC/...
Новость: http://www.opennet.me/opennews/art.shtml?num=17227
по этой теме (и не только) есть замечательная книга
Ален Голуб "Веревка достаточной длины, чтобы выстрелить себе в ногу"
лучше вряд ли кто-то напишет
if (f()) - за это вообще половину freashmeat, sourceforge и google code по убивать надо :)
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*/Навеяло :)
у меня сегфолтится, что там? :)
>> goto необходимо использовать крайне умеренноА нас на АСУ учили вообще его не использовать.
Доходило до смешного, когда делали охренительно здоровый алгоритм,
но никто не знал как его запрограммировать.
странно вас учили. Любой алгоритм можно запрограммировать без goto
>странно вас учили. Любой алгоритм можно запрограммировать без gotoНо иногда обходной вариант выглядит ну ооооооочень страшно.Кстати а что, вы стесняетесь и ассемблерной команды JMP тогда уж? :D
goto нужен когда не хочется тратить процессорное время на вызов функций и есть голова на плечах, например в драйверах. Посмотрите на код libata, там этого goto от души напихано, и ничего так, работает.
приятная статейка
> Никогда не следует переопределять значение NULL, которое всегда должно
> равняться нулю.Вранье. NULL -- далеко не всегда 0x0. Аффтар статьи не видел Vax'ов.
А что там?
(просто интересно)
авторы 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
>Числовых констант, как правило, следует избегать; лучше использовать #define для задания понятного имениа гугл настойчиво не рекомендует использовать define
И кто-то ещё смеет говорить что PHP небезопасен и кривой???
агрегация зависимых устойчивых значений в консанты, как решение для платформо-независимого кода всегда будет лучшим выбором, пусть даже внутри одной программы.Если вы решили заменить NULL на 0, то лучше всего сделать это через #define, ибо обратная замена будет очень трудоемкой.