Autor Zpráva
japlavaren
Profil
Mám dotaz. Je switch zbytočný, alebo nie. Ešte nikdy som ho nepoužil. Plne ho nahrádza IF. A keď ich porovnám, if sa může daleko viac vetviť, má jednoduchší zápis....

Má zmysel používať switch, a ak áno, načo. Poprípade rozdiel medzi switch a if


A ešte dotazík. Taktiež sa mi zdá zbytočná trieda. Všetko sa dá nacpať i do array, a je to prehladnejšie a rýchlejšie. I keď, občas sa možná hodí, ale i tak jem jí ešte nikdy nepoužil
24k_work
Profil *
Switch ma smysl v onom pripade kdy muzes mit nekolik case a ukoncis je jednim breakem , tj pro nekolik case se provede jedna vec.

Jinak switch se pouziva vetsinou na 1 promennou a jde spise o prehlednejsi konstrukci nez u IF , ELSE

samozrejme Switchem rozvetvene IFy nenahradis.


trieda? Myslis CLASS? nejak nechapu porovnavani s datovym typem ARRAY ... Oboje je na uplne neco jineho.
Acci
Profil
1) Switch je o něco rychlejší než IF, navíc je i přehlednější.
2) Třída je právě mnohem přehlednější. Zkus se například podívat, jak jednoduše jde implementovat třeba Texy nebo FSHL do vlastní aplikace.
WanTo
Profil
24k_work
trieda? Myslis CLASS? nejak nechapu porovnavani s datovym typem ARRAY ... Oboje je na uplne neco jineho.
On myslí asociativní (hashové) pole. Dám příklad:
$objekt->neco = "něco";
$pole["neco"] = "něco";


Jinak rozdíl mezi if/else if/else a switch je hodně vidět v jazycích typu C, C++, Java, C# apod. Tam totiž může být v parametru switch pouze číslo, popř. znak a hodnoty ve větvích case musí být konstantní. Tam už může být switch rychlejší o dost.
japlavaren
Profil
no, tak dajme tomu s triedov. ale, že by nešiel IF na niekoľko CASE ako IF, to sa mi nezdá. S () a || mi to ide. A že je prehladnejší, to sa mi taktiež nezdá. pokiaľ sa rozpíše na riadky a použijú tabulátory, tak je na tom rovnako/ak nie lepšie/

a s triedou, aj tak ju použiješ iba na uloženie údajov počas behu. a to zvládne i array. s pár poznámkamy okolo, aby to pochopil kaźdý
japlavaren
Profil
WanTo - rychlejší to jo, ale megaaplikace denne neprogramuješ, a pri rýchlosti pc dnes postačí IF
gaminn
Profil *
1) Rozhodně přehlednější je switch

if($foo == 1) {
// delej neco
} elseif($foo == 2) {
//
} elseif($foo == 3) {
//
} else {
//
}

switch($foo) {
case 1:
//
break;
case 2:
//
break;
case 3:
//
break
default:
//
}

Při případné změně názvu proměnné ti ji stačí přepsat na jednom místě, se switchem se dá taky skvěle udělat totéž, co s if($foo == 1 || $foo == 2 || $foo ==3), a další kousky.... uděláš to s mnohem přehlednějším zápisem.

2) OOP mi taky přišlo vždy zbytečné... ale zase jde o přehlednost, data jsou zapouzdřena, nikde ti nic nekoliduje. Uvažuj třeba třídu pro práci s databází - teď máš všude po ksriptech rozházené funkce jako mysql_query, mysql_fetch_array, ale co když najednou změníš databázi? Musel bys všechny funkce mysql_xxxx nahrazovat. Pokud použiješ třídu, která bude mít za úkol pracovat s db, budeš používat metody jako $db->query, $db->fetch, a kdykoliv můžeš přehráním jediného souboru zaměnit obsah těch metod tak, že budou pracovat s databází, kterou zrovna používáš (vím, že asi db měnit nikdy nebudeš, ale dá se na tom pěkně ukázat výhoda tříd).
WanTo
Profil
japlavaren
Někde jsem viděl hezký příklad, kde byl switch opravdu nenahraditelný. Tuším, že program podle data určil, kolikátý den je v roce. Zkusím ho někde najít.
WanTo
Profil
japlavaren
Divil by ses. Občas je každá milisekunda drahocenná. Už delší dobu se zabývám programování her (nejdřív v Javě, teďka v C++) a tam je optimalizace opravdu nezbytná.
thingwath
Profil
Kdeco je zbytečné. Třeba smyčky by taky vůbec nemusely být a šly by všechny udělat pomocí goto (nevím tedy, jestli v PHP).
japlavaren
Profil
no, zůstanem u if. i když ste mňe skoro prehovorili. switch budu používat též, ale jenom na jednoduché veci, né na vetvení

ok, s class to uznávam. ešte som nerobil s databázov, takže ok
WanTo
Profil
thingwath
Že bychom se vrátili od strukturovaného a objektového programování k záplavě návěstí a příkazů goto? :-)
Hugo
Profil
GOTO to mi pripomelo me zacatky s BASIC-G a posleze s QBASIC. To bylo programovani :-).
japlavaren
Profil
WanTo - tak ok. rozbyte pc-čka a poďme navíjať relátka a postaviť nové. No, taká 1GB ramka, to bude slušný počet kondíkov a tranzistorov... A procák z relátiek, to aby som si kúpil nejakú večšu halu a nachystal peniaze na účet za elektrinu ;))
thingwath
Profil
No, procesor žádné smyčky nezná, podívejte se na instrukční sadu vašeho procesoru :-)
WanTo
Profil
No, procesor žádné smyčky nezná, podívejte se na instrukční sadu vašeho procesoru :-)
On to někdo tvrdil? ;-)

Ale když si budeš chvíli hrát, tak máš pomocí instrukcí typu je, jne, jmp smyčku hned.
japlavaren
Profil
thingwath vs WanTo - kľud
WanTo
Profil
japlavaren
Nějaký problém? :-)
japlavaren
Profil
WanTo - agresivita, prvé štádium začiatku demencie :))
WanTo
Profil
japlavaren
Já jsem to zas tak agresivně nemyslel :-D
japlavaren
Profil
chápem, som na tcojej strane. robím si srandu ;)
Toto téma je uzamčeno. Odpověď nelze zaslat.