Diskuze: Switch a default case
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Neregistrovaný

Zobrazeno 24 zpráv z 24.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
switch (promenna)
{
case 1: udelejNeco();
break;
case 2: udelejNecoJinyho();
goto case 1;
default: UdelejNecoJinyho();
break;
}
Musíš na konci každýho case něco, co způsobí, že ti běh programu nespadne do další větve - break, return, goto, throw.
Např. u case 2 se provede nejdřív větev pro 2 a pak větev pro 1.
Fuj, to je hnus. Už se nedivím, že potřebuješ breakpointy a krokování.
Ale no tak. Osobne jsem tu od tebe jeste zadnou ukazku zajimaveho kodu v C# nevidel, jen teoreticke reci o TDD. Muzu se te zeptat, jestli uz jsi vlastne nekdy delal na nejakem komercnim projektu? A ted nemyslim e-shop pro kamarada za sud piva, ale neco, na cem spolupracuji alespon tri lidi a vyvoj trva aspon par mesicu.
Dogmata jsou super, ale jen na univerzite.
Jaký hnus? Je to téměř ten samý kód, co je u switche i na MSDN...
Však právě. Goto bylo už v prvním produktu od Microsoftu a v jejich aplikacích smrdí dodnes.
rozhodně lepší řešení než když se v javě nedá break tak to propadává o větev níže...
Jak Java ví, že jsi ten break zapomněl? Nebo je to tak, že frajeři, co jsou příliš sexy na IDE, po kompilaci pročtou output a u každého warningu se mrknou, jestli zapomněli break, nebo to tak chtějí? Nojono.
Dobře, v C# neděláš (tím spíš mě zaráží, jak pěkně ho umíš kritizovat), tak teda v jiném jazyce jsi nějaký takový projekt, jak se ptám výše, dělal?
Na goto není vůbec nic špatného, špatné je, když ho někdo blbě používá. Nebo chceš říct, že assembler je špatný jazyk, protože se tam pořád jenom skáče?
Co ti tak vadí na goto?
Nadužívání sice znepřehledňuje kód (ale to když se použije prasácky dokáže jakákoliv konstrukce, třeba i spousty podmínek) a je to konstrukce, bez které se vždy obejdeš - cokoliv s goto se dá přepsat jinak, ale jsou situace, kdy goto dokáže kód urychlit/zpřehlednit.
Tento názor má třeba i pratvůrce tvého oblíbeného OS - Linus Torvalds.
Goto je velmi nebezpečné, může nastat např. tato situace: http://xkcd.com/292/
Normálně se warningy přece neobjevují, takže i ten jeden je při kompilaci velmi dobře vidět.
Goto jsem nikdy nepoužil. Stačí při programování přemýšlet trochu jinak a také ho nebudeš nikdy potřebovat.
V assembleru jiná možnost není, ale přesto se tam dají při skocích dodržovat určitá pravidla a udržet tak program na uzdě.
Chceš mi snad sdělit, že po kompilaci programu nepročítáš warningy a errory od kompilátoru? No nazdar.
Java pozná zapomenutý break ve switch podle toho, že za návěštím jsou příkazy, za kterými je místo break hned další návěští. Tento warning se dá selektivně vypnout, tedy pro konkrétní switch.
C# to AFAIK umí také.
Chceš mi snad sdělit, že po kompilaci programu nepročítáš warningy
a errory od kompilátoru?
To jsem nějak nikde nepsal - nebo jo?
Ale abychom to nezamluvili - můžeš mi prosím odpovědět na tu původní otázku, ohledně tvých dosavadních zkušeností?
... frajeři, co jsou příliš sexy na IDE, po kompilaci pročtou output a u každého warningu se mrknou, jestli zapomněli break, nebo to tak chtějí?
Z toho ti plyne, že já nečtu warningy? Přišlo mi jen zvláštní, že chceš mít v kódu něco, co vyhazuje warning, ale přitom to může být zamýšlená věc. Dál jsi napsal, že se ten warning dá vypnout, což mou zvědavost v tomto ohledu ukojilo.
Ještě tu ale máme jednu nezodpovězenou otázku, že...
Hmm. Jak jsi přišel na to, že chci v kódu něco, co vyhazuje warning? Ve větvích switche mám obvykle jen returny, takže zpravidla ani ten break nepotřebuji.
Dobře, máš pravdu, nech to plavat.
A teda ohledně těch zkušeností?
Často si jako komik připadám. S Matesaxem příbuzný nejsem a ani bych být nechtěl. Přesto jsem si na něj tady zvykl.
Zobrazeno 24 zpráv z 24.