[ sojic @ 03.11.2004. 17:37 ] @
Radi se o razlicnim mislenja. U principu radi se o ne bitnoj sitnici koja mislim da kako i da se resi je ispravno, ali ipak.... Sta je bolje (i zasto, dali je brze).

$Odgovor je boolean

99% od slucaja $Odgovor = false

Kako bi vi resile problem?


Code:

if ($Odgovor) {
    izvrsi nesto
}
else {
    izvrsi nesto drugo
}


ili

Code:

if (!$Odgovor) {
    izvrsi nesto drugo
}
else {
    izvrsi nesto
{

[ JogyII @ 03.11.2004. 17:48 ] @
prva verzija, lakse se odrzava, i smanjuje mogucnost greske

inace vecina danasnjih kompajlera, interpretatora ... je sposobna da interno to prebaci u drugi oblik, i time ga ubrza, a i da nije u praksi je vaznije da se program 10% lakse odrzava nego da radi 10% brze
[ sojic @ 03.11.2004. 22:32 ] @
Zar samo jedan odgovor? 1:0. Dajte malo vise :)))
[ CimBac @ 04.11.2004. 01:13 ] @
Bolja je druga varijanta jer se dvostrukom negacijom dobija konfirmacija 1:1
[ BytEfLUSh @ 04.11.2004. 01:24 ] @
Bez negacije se takođe dobija konfirmacija, a zbog čega komplikovati program?
[ sojic @ 04.11.2004. 01:27 ] @
Najverovatno zbog jednacenje rezultata
[ filjo @ 04.11.2004. 05:44 ] @
Izracunaj $Odgovor
AND AL,AL
JE izracunaj drugi odgovor ili JNE izracunaj drugi odgovor
Izracunaj odgovor
JMP dalje
Izracunaj drugi odgovor
dalje


Trebalo bi da brze radi ako je odgovor netacan(ako skace na else) jer izbegava JMP dalje.

Mislim da ovo nije toliko bitno koliko je bitno da li se izracunava ceo $Odgovor, posto ako se on ne izracunava u celosti, trebalo bi da se pazi na komponovanje logickih operatora unutar izraza tj. da se kompajleru pomogne da sto brze dodje do tih 99% netacnih odgovora.
[ jablan @ 04.11.2004. 08:05 ] @
Pravilno je pisati tako da if blok bude veći od else bloka. Ako su otprilike jednaki, pretpostavljam da važi Jogijevo pravilo čitljivosti.

Ispravka samog sebe.

Sad sam pogledao Code Complete, pravilno je sledeće: u if blok pisati kood koji bi trebalo da bude normalan (dominantan) tok izvršavanja programa, a u else alternativni (koji odgovara grešci ili izuzetku).
[ -zombie- @ 04.11.2004. 17:58 ] @
Citat:
jablan:
Pravilno je pisati tako da if blok bude veći od else bloka. Ako su otprilike jednaki, pretpostavljam da važi Jogijevo pravilo čitljivosti.


pravilno? po kom pravilu? čijem?

ili još bitnije, po kojoj logici?

Citat:
Sad sam pogledao Code Complete, pravilno je sledeće: u if blok pisati kood koji bi trebalo da bude normalan (dominantan) tok izvršavanja programa, a u else alternativni (koji odgovara grešci ili izuzetku).


ovo već ima smisla.. ;)

mada, moram da priznam da ponekad više volim, ako su npr prosleđeni parametri loši, da što pre izađem iz funkcije.. znači nešto tipa:

Code:
if (param1==null) return false;

što naravno nije sasvim po PS (pravilima službe), ali je IMHO često preglednije..


[Ovu poruku je menjao -zombie- dana 04.11.2004. u 19:07 GMT+1]
[ sasas @ 04.11.2004. 18:05 ] @
Citat:
-zombie-:
mada, moram da priznam da ponekad više volim, ako su npr prosleđeni parametri loši, da što pre izađem iz funkcije.. znači nešto tipa:
Code:
if (param1==null) return false;

što naravno nije sasvim po PS (pravilima službe), ali je IMHO često preglednije..


Zasto nije po PS? Ja to redovno koristim, upravo radi citkosti, i upravo kod prosledjivanja parametara. Da li ima neko pravilo za takve slucajeve?

ss.
[ jablan @ 05.11.2004. 08:18 ] @
Citat:
-zombie-: pravilno? po kom pravilu? čijem?

Već sam se ispravio. Mada, u većini slučajeva veći blok je u isto vreme i glavni blok. A bez zezanja sam čuo negde, mada ne mora da znači da je izvor bio kredibilan.
Citat:
sasas: Zasto nije po PS? Ja to redovno koristim, upravo radi citkosti, i upravo kod prosledjivanja parametara.

Zombie verovatno misli da na to da se time narušava načélo strukturnog programiranja da blok ima tačno jedan početak i tačno jedan kraj (naspram nekad ozloglašenom špageti bejzik stilu).

BTW, momci, jel iz nekog posebnog razloga ne koristite
Code:
if (param == null) throw new ArgumentException()
[ MAD-MAX @ 05.11.2004. 23:08 ] @
Citat:
sojic: Zar samo jedan odgovor? 1:0. Dajte malo vise :)))


Ja bih koristio prvu varijantu. Mislim da nikada nisam koristio drugu iako po knjigama koje sam citao (za C++,C#,Java,) cesce sam sretao drugu varijantu. Mozda ja malo "missing the point" ali ne vidim prednost drugog nacina.


Poz.