Tema: Re: Klausima del IF sintakses
Autorius: Jornada Del Muerto
Data: 2010-03-13 15:14:23
JS'e kas rase tai rase taip vadinamam poor readable stiliuje, cia is serijos:

if(a==1)
    while (...... ir eina kokia 10 eiluciu ar dar koks if be skliaustu vel...

Nors tu ne i ka geresni pavertei, po kurio laiko kai reiks koreguot valanda po to galvosi ka cia parases... pasiskaityg "Code style guide" kokiu kaip rasomas kodas turi but kad jis but aiskus ir po 5 metu nesukant daug galvos, galiu keleta patarimu duot:


1. If salyga

Blogai:

if ( a == 1 ) return true; 

    Tai yra pats blogiausias iprotis bet kokio c++ family kalboje, dalykas toks kad jei noresi pradebugint kada vyksta sios salygos true, bus keblu, o kada if ir return yra skirtingose eilutese eina konkreciai ant return uzdet breakpoint'a, kas del PHP tai ner problemos debuggint ir ji (pvz su PHPEdit)


Pakenciamai:

if ( a == 1 )
    return true;

    Minusa sis variantas turi vistiek, jei veliau prisirasys daugiau kodo i salyga del neturejimo iprocio deti visada skliaustus teks juos darasineti kas blasko tavo pacio logika kai sprendi kazkokia biznio logikos problema ir rezultate issiblaskes darai daugiau bugu, tai tiesiog iprotis dirbt netvarkingai kuri reiketu isgyvendint, jei veliau kodas pleciasi pamirsti pridet skliaustus jis darosi sunkiai iskaitomas.

1.3 Gerai:

if ( a == 1 )
{
    return true;
}

    Sis kodas yra aiskus ir galima plest bei tobulint sia logika negalvojant apie kodo tvarkyma, tuo paciu bet kam aisku kas cia, geriausia negailet nauju eiluciu ir IF ELSE END IF konstrukcijas rasyti aiskias, pvz:


Kas del "IIFiniu" konstrukciju kaip a = (condition ? true result : false result ) geriausia laikytis tvarkos ir visada tokia salyga apskliaust, siuo atveju negailejimas skliaustu daro aiskesne logika, tuo paciu kartais isvengiama ir bugu.

Stage 1: Tavo koda jei graziai parasius butu:

if ( v=='show' ) {
    v='visible';
}
else {
    if(v='hide')  {
        v='hidden'; 
    else {
        v=v;
        }
    }
}

Stage 2: Jeigu ji optimizavus butu:

if ( v=='show' ) {
    v='visible';
}
else if(v='hide') {
        v='hidden'; 
}

// ELSE realiai nereikalingas nes v ir taip lygi v ;) parasiau tik tam kaip tai turi atrodyt kas del stiliaus
else {
     v=v;
}

Stage 3: Taisykle vengt daugiau kaip 2 IF ELSE IF ELSE jei to tikrai nereik, ta prasme, cia puikiai tinka switch:

switch(v)
{
    case 'show':
        v = 'visible';
        break;

    case 'hide':
        v = 'hidden';
        break;

        // sis elementas useless
    default:
        v = v;
        break;
}

Darydamas sudetingas logikos israiskas, tik pats sau apsukini velesni gyvenima, jei veliau tau ar kam nors kitam teks tai taisyt, tai ausys raudonuos kaip jis tave keiks :)






"Tyro" <tyro@xxx.lt> wrote in message news:hmo7km$6cs$1@trimpas.omnitel.net...
> jau issprendziau, tiksliau perrrasiau:
>  if(v=='show') {v='visible';}
>    else {
>     if(v='hide') v='hidden'; else v=v;
>    }
> 
> :)
> -- 
> Tyro
> 
> Peugeot 605
> RC offraod, fun-fly
> "Tyro" <tyro@xxx.lt> wrote in message 
> news:hmo7ar$5tq$1@trimpas.omnitel.net...
>> Sveiki, kaip butu galima perrasyti sia if salyta standartiskai? Ji seip 
>> parasyta JS, bet skirtumo neturetu nuo php buti.
>>
>> v=(v=='show')?'visible':(v='hide')?'hidden':v;
>>
>> meginau parasyti sekanciai, bet nesuveikia
>>    if(v=='show') {v='visible';}
>>    else {
>>     if(v=='hide') v='hidden'; else v=v;
>>    }
>>
>> Is anksto dekui
>> -- 
>> Tyro
>>
>> Peugeot 605
>> RC offraod, fun-fly
>> 
> 
>