The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Приемы программирования на C, позволяющие сберечь время, требуемое для сопровождения кода

04.08.2008 15:10

Общеизвестно, что сопровождение приложения отнимает значительную часть времени программиста. Частично это происходит из-за использования платформозависимых и нестандартных особенностей, но в большей степени - из-за плохого стиля программирования. В статье дается несколько советов, которые помогают сберечь время, требуемое для сопровождения кода. Следование этим советам сделает сопровождение приложений командой разработчиков более простым.

  1. Главная ссылка к новости (http://www.ibm.com/developerwo...)
Автор новости: IBM dW
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/17227-gcc
Ключевые слова: gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (15) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 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*/

    Навеяло :)

     
     
  • 2.13, Умный (?), 19:11, 05/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    у меня сегфолтится, что там? :)
     

  • 1.4, Allex (?), 08:09, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> goto необходимо использовать крайне умеренно

    А нас на АСУ учили вообще его не использовать.
    Доходило до смешного, когда делали охренительно здоровый алгоритм,
    но никто не знал как его запрограммировать.

     
     
  • 2.8, whirlwind (?), 10:40, 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.5, Ононим (?), 08:26, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    приятная статейка
     
  • 1.6, Andrew Kolchoogin (?), 09:59, 05/08/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Никогда не следует переопределять значение NULL, которое всегда должно
    > равняться нулю.

        Вранье. NULL -- далеко не всегда 0x0. Аффтар статьи не видел Vax'ов.

     
     
  • 2.10, Romik (??), 14:57, 05/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    А что там?
    (просто интересно)
     
  • 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.14, Oles (?), 01:24, 06/08/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И кто-то ещё смеет говорить что PHP небезопасен и кривой???
     
  • 1.15, chepuha (?), 13:54, 06/08/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    агрегация зависимых устойчивых значений в консанты, как решение для платформо-независимого кода всегда будет лучшим выбором, пусть даже внутри одной программы.

    Если вы решили заменить NULL на 0, то лучше всего сделать это через #define, ибо обратная замена будет очень трудоемкой.

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру