Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Вниз

Как молоды мы были, или смешные исходники :D   Найти похожие ветки 

 
Джо ©   (2006-02-18 05:05) [40]

> [37] Дмитрий Белькевич ©   (18.02.06 04:48)
> Есть такое страшное слово - refucktoring ;)

Ты не поверишь, я имею о нем представление. Даже знаю, кАк оно правильно пишется :)


 
Sergey Masloff   (2006-02-18 08:04) [41]

Ученик чародея ©   (18.02.06 04:56) [38]
В двух местах минимум trt...finally не хватает
Я вообще-то имел в нечто большее и законченное. Этот код 1% от маленького проекта (или 0.00001% от большого) а ты на нем уже 2 предупреждения компилятора (минимум) пропустил...


 
Ученик чародея ©   (2006-02-18 08:12) [42]

>>Sergey Masloff   (18.02.06 08:04) [41]

Вроде, компилятор не ругался. Да и на стабильность никто не жалуется. Хотя, у нас основная модель разработки - сделать быстро, чтобы работало(на стенде).


 
Sergey Masloff   (2006-02-18 08:18) [43]

Ученик чародея ©   (18.02.06 08:12) [42]
Ругался-ругался ;-) Просто ты наверное хинты с варнингами отключил
Я на работе бьюсь - бьюсь с народом чтобы от этой порочной практики отошли...
Так-то код нормально читаемый. А защищенный блок вставить это времени не занимает, дело привычки. А чтоб ее выработать надо внимательно читать что компилятор пишет.


 
Verg ©   (2006-02-18 08:43) [44]

Не знаю про "смешные", но попадаются экземпляры сорта "танцы с бубном" :)
К таким относятся, к примеру, алгоритмы хеш функций. Например, хеш для МАС адресов:

#define mix(a,b,c) \
       do {                                            \
               a -= b; a -= c; a ^= (c >> 13);         \
               b -= c; b -= a; b ^= (a << 8);          \
               c -= a; c -= b; c ^= (b >> 13);         \
               a -= b; a -= c; a ^= (c >> 12);         \
               b -= c; b -= a; b ^= (a << 16);         \
               c -= a; c -= b; c ^= (b >> 5);          \
               a -= b; a -= c; a ^= (c >> 3);          \
               b -= c; b -= a; b ^= (a << 10);         \
               c -= a; c -= b; c ^= (b >> 15);         \
       } while (0)

static u_int32_t
mac_address_hash(struct ether_addr *addr)
{
       u_int32_t a = 0x9e3779b9, b = 0x9e3779b9, c = sc_hashkey;

       b += addr->ether_addr_octet[5] << 8;
       b += addr->ether_addr_octet[4];
       a += addr->ether_addr_octet[3] << 24;
       a += addr->ether_addr_octet[2] << 16;
       a += addr->ether_addr_octet[1] << 8;
       a += addr->ether_addr_octet[0];

       mix(a, b, c);
       return (c & BRIDGE_RTABLE_MASK);
}


что происходит в mix? :)


 
TUser ©   (2006-02-18 11:18) [45]

> Ругался-ругался ;-) Просто ты наверное хинты с варнингами отключил Я на работе бьюсь - бьюсь с народом чтобы от этой порочной практики отошли...

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


 
kaZaNoVa ©   (2006-02-18 11:30) [46]

а для чего нужно исключать Warnings?))  если код всё равно работает, выполняя поставленную задачу .. - просто так? для надёжности?


 
TUser ©   (2006-02-18 12:20) [47]

> а для чего нужно исключать Warnings?))  если код всё равно работает, выполняя поставленную задачу .. - просто так? для надёжности?

Раскапывая варнинги вполне реально найти ошибки. Например, "Variable blablabla might not been initialized" - это может быть признаком не безобидной приходи компилятора, а логической ошибки.


 
Sergey Masloff   (2006-02-18 12:21) [48]

kaZaNoVa ©   (18.02.06 11:30) [46]
no comments
не все так просто


 
Дмитрий Белькевич ©   (2006-02-18 16:51) [49]


> а для чего нужно исключать Warnings?))  если код всё равно
> работает, выполняя поставленную задачу .. - просто так?
> для надёжности?


Либо сразу разгребай _все_ замечания, либо потом сам узнаешь. Тебе юзеры расскажут ;)


> Раскапывая варнинги вполне реально найти ошибки. Например,
>  "Variable blablabla might not been initialized" - это может
> быть признаком не безобидной приходи компилятора, а логической
> ошибки.


Этот warning - почти всегда ошибка. Рано или поздно вылезет, когда стек, где локальные данные хранятся будет заполнен мусором. Помню, как-то на отлов одной неинициализированной переменной почти неделя ушла - глюки лезли совершенно безсистемно.


 
Defunct ©   (2006-02-18 18:09) [50]

VictorT ©   (13.02.06 18:10)  

А че смешного-то в этой функции? одна малюсенькая ошибка еще не является поводом для смеха.

вот это смешно:
Procedure InitDate(a,b,c:Integer;Var a1,b1,c1:Integer);
Var ExitCod:Boolean;
Begin
   Exitcod:=true;
   If (b=2) then if a<28 then a:=a+1 else Begin
   a:=1;b:=b+1;ExitCod:=False;End;
   if exitcod then begin
   if (b=1) or (b=3) or (b=5) or (b=7) or (b=8) or (b=10) or (b=12)
   then if a<31 then a:=a+1 else Begin a:=1;b:=b+1;Exitcod:=False;End;
   End;
   if exitcod then Begin
   if (b=4) or (b=6) or (b=9) or (b=11) then if a<30
   then a:=a+1 else begin a:=1;b:=b+1;End;
   end;
   If b=13 then Begin
   c:=c+1;b:=1;End;
  a1:=a;b1:=b;c1:=c;
End;


 
Джо ©   (2006-02-18 18:25) [51]

> [50] Defunct ©   (18.02.06 18:09)
> вот это смешно:

Это не смешно, это страшно 8-)


 
Defunct ©   (2006-02-18 18:42) [52]

Джо ©   (18.02.06 18:25) [51]

это аналог того о чем говорил Ega23 в [1] ;>


 
VictorT ©   (2006-02-18 18:58) [53]

Defunct ©   (18.02.06 18:09) [50]
А че смешного-то в этой функции? одна малюсенькая ошибка еще не является поводом для смеха.

А какая ошибка? Вроде работала...
А смешно (лично мне), что изобретал велосипед, когда и так в Си есть готовые средства.


 
Defunct ©   (2006-02-18 19:37) [54]

> А какая ошибка? Вроде работала...

вот эта:
n -= m;

должно ж быть n /= 10, если я правильно понял назначение функции ;>


 
Defunct ©   (2006-02-18 20:54) [55]

VictorT ©   (18.02.06 18:58) [53]
> А смешно (лично мне), что изобретал велосипед, когда и так в Си есть готовые средства.

Ну в C то есть готовые средства, но не всегда целесообразно ими пользоваться. Для сокращения размера программы иногда логично не подключать объемную библиотеку, а описывать такие функции как IntToStr/StrToInt самостоятельно.


 
VictorT ©   (2006-02-18 21:01) [56]


> должно ж быть n /= 10, если я правильно понял
> назначение функции ;>

хм... может быть. не могу счас сообразить, много коньяка.

> Ну в C то есть готовые средства, но не всегда
> целесообразно ими пользоваться. Для сокращения размера
> программы иногда логично не подключать объемную
> библиотеку, а описывать такие функции как
> IntToStr/StrToInt самостоятельно.

Ну, у меня точно не тот случай, а сделано это именно от незнания.
Кроме того, например, sprintf() не требует ничего подключать.


 
wicked ©   (2006-02-18 22:09) [57]


> Ну, у меня точно не тот случай, а сделано это именно от
> незнания.
> Кроме того, например, sprintf() не требует ничего подключать.

уууу..... а некислый сишный рантайм натурально в космосе находится?.... ;)
правда, у тебя msvc - рантаймы на каждой машине с виндовсом.... а вот бедным борландитам несладко - будь добр линковаться статически или пиши инсталятор на каждую поделку.....
да и, смею добавить, функции, требующие format string, по определению не могут быстро работать, так как каждый раз при вызове они должны парсить этот самый format string.... гибкость за счет быстродействия, что, кстати, не всегда приемлемо.... хотя сам грешен - в "быстром" коде метод printf юзаю (аналог sprintf-а, но оформлен методом стрингового класса)....



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.015 c
6-1132219975
ancara
2005-11-17 12:32
2006.03.12
Indy HTTPS


15-1140233045
Ученик чародея
2006-02-18 06:24
2006.03.12
Почему человек верит в существующее в своем воображении?


15-1139977051
КаПиБаРа
2006-02-15 07:17
2006.03.12
MagicForum "Начинающим" заработала


2-1140421864
Ио
2006-02-20 10:51
2006.03.12
Вопрос по времени


15-1139896062
Ega23
2006-02-14 08:47
2006.03.12
С Днём рождения! 14 февраля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский