Názory ke článku C# - 9. lekce: příkazy break, continue, goto, if - else, switch
15. 12. 2009
Já bych se obecně goto vyhýbal. V moderních programovacích jazycích nemá co dělat.
Reagoval na komentář od uživatele Arcao : Nedělám si iluze, že by ho nikdo nepoužíval, ale ještě jsem to v C# neviděl.
Reagoval na komentář od uživatele Arcao :
Goto je pravda trochu kontroverzni, ale nesouhlasim s tvrzenim V moderních programovacích jazycích nemá co dělat - na nektere veci je dobry porad, typicky na ukonceni nekolika vnorenych cyklu. Jde to pravda resit i jinak (treba break+nejaka pomocna promenna), ale neznam reseni, ktere by bylo jednodussi, prehlednejsi a na prvni pohled patrne, co se dela. Jinak v jave udajne existuje neco jako break 3; (vyskoceni z vnoreneho cyklu o tri urovne), ale to mi zrovna bezpecne neprijde a navic neni na prvni pohled videt, kam se vlastne skace.
15. 12. 2009
Psat i++ je pekna blbost. Kdyz nepotrebuju hodnotu i pred incremetaci, tak se to ma psat ++i.
U integeru to mozna az tak nevadi, ale kdyz chete inkremntovat neco jineho treba iterator, tak se vzdy ma psat preinkrementace - je to rychlejsi :)
Reagoval na komentář od uživatele Petr :
Preinkrementace je sice rychlejší, ale ten rozdíl je zanedbatelný, takže za blbost bych to rozhodně neoznačoval.
Zdeněk Moravec píše:
Souhlasim.Reagoval na komentář od uživatele Petr :
Preinkrementace je sice rychlejší, ale ten rozdíl je zanedbatelný, takže za blbost bych to rozhodně neoznačoval.
26. 12. 2009
Reagoval na komentář od uživatele Zdeněk Moravec :
Pokud to clovek pouzije jen na integer tak to zas tak nevadi, ale napr. u takoveho iteratoru nebo neceho slozitejsiho to v dlouhem cyklu muze zpomalovat.
To je to same jako se napr. ve for cyklu ptat na metodu size(), taky blbost vetsinou.
1. 1. 2010
no nevimpokud mam iterator tak foreach je cistsizpusob co do vzhledu, a pokud jde o size of ve for ciklu, kompilator si to stejne zoptimalizuje a hodnotu si spocita do promene, tak proc pridavat radky kdyz to nemusi byt, dulezity je cisty a prehledny kod
5. 1. 2010
Reagoval na komentář od uživatele Mi.Chal. :
break 3; v Javě nefunguje, tam se pouziva navesti napr.
navesti: while(true)
{
while(true)
{
if(true) continue navesti;//pokracuje ve vnejsim cyklu
break navesti; //ukonci vnejsi cykl
break;//ukonci vnitrni cykl
}
}
Jinak obecně bych řekl, že použití goto ať už v Javě nebo v C# znamená ve většině případů chybu v návrhu programu. Tím myslím, že se většinou dají vnořené cykly přesunout do samostatné funkce nebo se dá vylepšit návrh tříd.
Reagoval na komentář od uživatele Mi.Chal. :
Goto je v c# velmi ošklivá věc - vlastně se na každém pointu udělá image stacku a pak se u goto nahraje. Z praxe můžu říct že to tak jednou z tisíce neudělá co to má - pokud mám v programu goto několikrát, je to čím dál horší + je to pomalé. Náš pan profesor na c# o goto tvrdil "bič a pryč!"
7. 1. 2012
#7 Petr
To je to same jako se napr. ve for cyklu ptat na metodu size(), taky blbost vetsinou.
Blbost je spíš size() v hlavičce cylku nepoužívat. Kompilátor to stejně vždycky zoptimalizuje.
C# i Java při každém přístupu do pole kontrolují meze. Když v C# napíšete
for(int i=0;i<array.Length;++i){
array[i]=0;
// nejaky kod
}
kompilátor v tom pozná jistý vzor procházení přes celé pole a meze nekontroluje. A celé to je rychlejší. Navíc i přehlednější.
Opravdovým vývojářúm nevadí používání GOTO, ale začínajícím kolegům bych to také nedoporučovala. :)