Diskuze: Dokumentace o C#
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
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.
Však tu máš seriály přímo na C#. http://www.itnetwork.cz/…hry-zdrojaky
tak zkus programujte.com tam je taky pěkný seriál http://programujte.com/…34-serial-c/
Já jsem pečenej vařenej na MSDN, bývají tam občas i ukázky
použití.
Lepší dokumentaci než MSDN jsem zatím u ničeho neviděl .
Na MSDN jsou také občas bludy. Například goto, které do moderního jazyka nepatří.
Bludy tu píšeš ty.
Není žádný důvod, proč by goto do nějakého jazyka nemělo
patřit, protože v jistých situacích může kód zpřehlednit/urychlit.
Samozřejmě jen v jistých situacích a když se použije nevhodně, může čitelnosti i uškodit.
Pánové, zase?
Nepatří tam kam nemá . While je taky jump což je skoro goto nebo se pletu ?
Problém s goto je ten, že v jistou dobu bylo užívané až příliš, např. místo obyčejných podmínek nebo cyklů (protože podmínky i cykly jsou v strojovém kódu řešený stejně jako goto - přes jump), takže někteří známí lidé (třeba Edgar Dijkstra) byli dokonce i pro jeho zrušení (protože se dá napsat jakýkoliv algoritmus i bez něj).
Dnes už se goto skoro vůbec napoužívá, protože podmínky a cykly už dnes patří k úplným základům programování, tak už nikoho nenapadne na běžných místech použít goto .
Ale jsou situace, kdy goto může být rychlejší a někdy i přehlednější (např. vyskakování z vnořených cyklů).
Kromě odpůrců má goto i zastánce (ale samozřejmě jen při použití v situacích, pro které je efektivnější), např. praotec Linuxu Linus Torvalds.
Když už o tom mluvíme, kód velmi znečišťují také direktivy k řízení běhu cyklů, jako jsou continue a break. Nebo dokonce for cyklus, který má v hlavičce 6 výrazů. Dále while(true) a podobně. Vždy mám problém takovéto kódy číst, přepíši si je na lidský zápis a potom si ťukám na čelo, jak to někdo mohl vůbec takto napsat, když to jde úplně jednoduše a čitelně.
Zkusil jsem odstranit break i ze switche. Výsledný kód byl mnohem přehlednější.
Nebezpečí goto, break a continue vidím v tom, že se toho občas chytí začátečník, který pak začne psát špagetový kód, kterého se pak těžko zbavuje. Takové programy pak bývají nepřehledné, dlouhé a pomalé.
Je to taková bitva pořádek versus chaos.
Asi by se to ale nemělo přehánět.
Například když kouknu okolo sebe, zjišťuji, že není od věci
oddělit psací náčiní od ponožek, ale řadit tužky podle velikosti
už mi přijde jako moc. Asi tak.
Nedavno jsem viděl tohle:
while (true)
{
if (expression)
break;
else
// do something
}
Ten člověk programovat uměl, nechápu, jak tohle může někdo napsat. Breaky si dokáži představit v nějakých algoritmech, tam se to může hodit. On skok je i return, ale ten mi nějak nevadí, zvláštní.
Něco podobného jsem našel i ve zdrojácích Wordpressu. Navzdory strašnému kódu je to asi nejúspěšnější redakční systém.
Právě v tom switchi jsem break nahradil returnem. Také mi připadá nějak sympatičtější.
Je vyšších jazycích je patrný i trend odstraňování cyklů a větvení.
Tohle používám běžně, hlavně pokud ten cyklus má víc způsobů ukončení nebo pokud předem nevím, co přesně ho bude ukončovat
Bude to asi vypadat jako rejpání, ale fakt to vidím jako možnou chybu v návrhu aplikace. Normálně by potřebě něčeho takového nemělo dojít.
Ty myslíš hrozně algoritmicky a nízkoúrovňově, tam se nekonečné cykly opravdu používají, ale v normálním programu by se to vůbec nemělo objevit. Nedokážu si ani představit kdy bych něco takového potřeboval a to už jsem si toho naprogramoval celkem dost. Máš nějaký konkrétní případ?
Třeba mainloop u nějaké hry - to se docela často řeší přes
while(true)
{
...
}
Jo, tady by to asi šlo, ale furt bych tam raději dal nějakou proměnnou a měl while (state == GameState.Running) nebo tak něco
Zobrazeno 24 zpráv z 24.