Re: AC Codin' Style[ was lug-bg: Kernel 2.4.11]
- Subject: Re: AC Codin' Style[ was lug-bg: Kernel 2.4.11]
- From: whitefang@xxxxxx ( )
- Date: Thu, 11 Oct 2001 19:23:06 +0300
On Thursday 11 October 2001 13:47, you wrote:
> Tochno VM ponastoqshtem e qbylkata na razdora, ponezhe Linus dopusna
> generalni promeni syvsem kysno v stabilniq 2.4. Dokolkoto razbrah,
> v momenta dazhe na Linus i na Alan v klonovete ima razlichni
> implementacii na VM: ednata na Andrea Arcangely, a drugata - na Rik
> van Rijl (maj ne se pishat tochno taka, ama nqmam vreme da gi
> proverqvam). Vseki smqta, che negoviqt podhod e po-dobriqt i
> po-stabilniqt.
>
> A pyk po otnoshenie na koda, oshte ne moga da preodoleq shoka, sled
> kato vidqh Alan Cox kolko goto-ta izpolzva v tcp/ip stack-a i v
> ipc.
>
Heh
Ami vseki si ima style :)
Sheguvam se.
GOTO ne e zabranen operator ( pone dokolkoto na men mi e izvestno ) ina4e
otdavna da sa go izhvyrlili napylno ili da praviat compilatorite primerno da
vadiat warnings kato go sreshnat. :)
Dori i po knigite za programirane se kazva __ne__ "Ne izpolzvaite GOTO",
a neshto ot sorta na "Izbiagvaite GOTO kogato e vyzmojno i ....." " ...Ima
situacii pri koito izpolzvaneto na GOTO e uda4no" ( naprimer izhod ot
sekcii pri nastypvane na izklu4itelna situaciq )
Predstavi si ,4e imash 10 deistvia koito triabva da izpylnish polsedovatelno
kato vsiako sledvashto izpylniavash samo pri usepshno izpylnenie na
predhodnoto. Sega si predstavi kolko vlojeni if...then....else konstukcii
triabva da imash za celta [ sled tova pogledni
/usr/src/linux/Documentation/CodingStyle i vij kakvo pishe za nivata na
vlagane na blockove i funkcii :) ] Izpolzvaneto na goto v podobni situacii
pravi coda mnogo po "4itaem" , a niakoi sl. i optimalen za izpylnenie( vse pak
na nivo instr. vsi4ko se svejda do instr. za prehod.
Sled koeto si predstavi 4e v tezi 10 posledovatelni deistvia
alocirash resursi, koito pri eventualen neuspeh triabva da dealocirash v
obraten red. Mai "if"-ovete shte se udvoiat. :)
if( !SUCCEDED(1)) if( SUCCEDED(1)
goto fail1 if(SUCCEDED(2))
if( !SUCCEDED(2) if(SUCCEDED(3))
goto fail2 return SUCCESS;
if( !SUCCEDED(3) else {
goto fail3; RELEASE(2);
RELEASE(1);
return SUCCESS; return FAILED;
fail3: RELEASE(2) }
fail2: RELEASE(1) else {
fail1: return FAILED; RELEASE(1);
return FAILED;
}
else
return FAILED;
Za pred "GOTO puritani" az obiknoveno prilagam while(1){ }
i break; ako niakoe ot deistviata e neuspeshno - taka si zapazvash
4itaemostta na "lineiniq" kod bez da izpolzvash GOTO.
No kogato ima i drugi cikli tozi podhod ne e prilojim poradi lipsata na
break <label> konstrukcia v "C".[ Makar , 4e tova syshto ima reshenie:
failure = 0;
while( !failure ) {
........
while( !failure && PREDICATE( y) ) {
............................
if( ! SUCCEDED(x)) {
failure++;
continue;
}
.............................
}
......
}
Oba4e ostava problema s clean-up-a sled eventualen neuspeh.- Za koito nai
uda4noto re6enie si ostava .....
GOTO+ etiket za cleanup za vsiako edno deistvie.
> I vse pak za men Linux kernel-yt rulez :)) Tova razbira se ne znachi,
> che e idealen.
>
Vav vseki sl. src-to mu e mnogo po "4itaem" ot tova na niakoi drugi
pseudo-OSes( Seshtai se )
> Petko
>
> > George Danchev <danchev@xxxxxxxxx> lug-bg@xxxxxxxxxxxxxxxxxx Re: lug-bg:
> > Kernel 2.4.11Date: Thu, 11 Oct 2001 13:04:18 +0300 Reply-To:
> > lug-bg@xxxxxxxxxxxxxxxxxx
> >
> >On Thursday 11 October 2001 12:51, you wrote:
> >> za men edin primer za zhelezen kernel e 2.2.18
> >
> >drugi primeri sa 2.2.19 i .20
> >
> >> ne znam kakvo mislite vie, ama az lichno sum na mnenieto, che 2.4.x mu
> >> eba maikata na sichkoto :(((
> >> sichko pochna da prilicha na Microsoftska rabota - nedoizpipano, pusnato
> >> v burzinata, bugove,
> >> patchove den sled den valiat :(
> >
> >spokojno Teodore , znaesh 4e ne si prav :)))
> >osnovniq problem na 2.4 beshe prenapisvaneto VM management coda, kato +
> > tova mnogo byrzo se dobaviha edna torba drivers ... tova se otrazi na
> > stabilnostta na 2.4.0 ...2.4.6/7. Ve4e 2.4.8 e korav kolkoto poslednite
> > 2.2.x mozhe bi i po-koravi po-burz zavisi kakvo i na kakvo se testva.
> > Imashe edna statiq ot edin core developer na freebsd VM , kudeto 4oveka
> > syvsem bezpristrastno si opisva dobrite i loshite nesta na dvete kernels.
> > Kakvo freebsd mozhe da nau4i ot linux i obratno... Po-negovi dumi :
> > kogato trqbva da se pishe na swap-a , Linux bie vsi4kite v zemqta (tova
> > zavisi i ot syotvetniq diskov driver de), kogato trqbwa da se tursi i
> > vadi ot tam oba4e Linux 2.4 imashe seriozen problem... tova ve4e e
> > fix-nato dostatu4no stabilno .... Koda na Linux kato cqlo e napisan
> > izklu4itelno _4isto_ (ne nasledqva nqkoj star Unix kod) i promenite se
> > pravqt sravnitelno lesno i byrzo... toj kazva 4e me4tae koda na VM na
> > freebsd da byde tolkova 4isto napisan kato linuxkiq , i tova e edna ot
> > celite kojto presledvat ...
> >Prosto Linux e s naj-agresiven development kato skorost ot vsi4ki ostanali
> >....... Pri takava golqma skorost nqkoj katastrofi sa neizbezhni, no te
> > susto tolkova byrzo se fix-vat ... koito iska da sedi po-nazad , da 4ete
> > LKML da tesva i da si precenqva....
>
> ------------------------------------------------------------
> --== Sent via Deja.com ==--
> http://www.deja.com/
> ===========================================================================
> A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers)
> http://www.linux-bulgaria.org/ Hosted by Internet Group Ltd. - Stara Zagora
===========================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers)
http://www.linux-bulgaria.org/ Hosted by Internet Group Ltd. - Stara Zagora
|