Autor | Zpráva | ||
---|---|---|---|
japlavaren Profil |
#1 · Zasláno: 28. 7. 2006, 12:25:18
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 * |
#2 · Zasláno: 28. 7. 2006, 12:28:13
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 |
#3 · Zasláno: 28. 7. 2006, 12:29:23
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 |
#4 · Zasláno: 28. 7. 2006, 12:33:19 · Upravil/a: WanTo
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 |
#5 · Zasláno: 28. 7. 2006, 12:36:39
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 |
#6 · Zasláno: 28. 7. 2006, 12:38:13
WanTo - rychlejší to jo, ale megaaplikace denne neprogramuješ, a pri rýchlosti pc dnes postačí IF
|
||
gaminn Profil * |
#7 · Zasláno: 28. 7. 2006, 12:39:24
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 |
#8 · Zasláno: 28. 7. 2006, 12:39:40
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 |
#9 · Zasláno: 28. 7. 2006, 12:41:29
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 |
#10 · Zasláno: 28. 7. 2006, 12:42:22
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 |
#11 · Zasláno: 28. 7. 2006, 12:44:41
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 |
#12 · Zasláno: 28. 7. 2006, 12:44:58
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 |
#13 · Zasláno: 28. 7. 2006, 12:49:21
GOTO to mi pripomelo me zacatky s BASIC-G a posleze s QBASIC. To bylo programovani :-).
|
||
japlavaren Profil |
#14 · Zasláno: 28. 7. 2006, 12:51:23 · Upravil/a: japlavaren
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 |
#15 · Zasláno: 28. 7. 2006, 12:56:14
No, procesor žádné smyčky nezná, podívejte se na instrukční sadu vašeho procesoru :-)
|
||
WanTo Profil |
#16 · Zasláno: 28. 7. 2006, 13:12:20
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 |
#17 · Zasláno: 28. 7. 2006, 17:52:12
thingwath vs WanTo - kľud
|
||
WanTo Profil |
#18 · Zasláno: 28. 7. 2006, 18:07:13
japlavaren
Nějaký problém? :-) |
||
japlavaren Profil |
#19 · Zasláno: 28. 7. 2006, 18:36:17
WanTo - agresivita, prvé štádium začiatku demencie :))
|
||
WanTo Profil |
#20 · Zasláno: 28. 7. 2006, 18:38:14
japlavaren
Já jsem to zas tak agresivně nemyslel :-D |
||
japlavaren Profil |
#21 · Zasláno: 28. 7. 2006, 19:35:06
chápem, som na tcojej strane. robím si srandu ;)
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0