Hlavní navigace

Názor ke článku Jaký jazyk jako první? od Ondrej Novak - [65] Některé důvody, kvůli kterým STL nepoužívám. Tím...

  • 20. 2. 2014 8:44

    Ondrej Novak (neregistrovaný) 2a02:598:7000:----:----:----:----:----

    [65] Některé důvody, kvůli kterým STL nepoužívám. Tím bych ale C++ nezatracoval.
    1) Ty operátory používám taky, ale ve stylu print("Ahoj %1") << jmeno; (tzv feed operátor) - on je to vlastn2 jediný způsob, jak poslat nějakému objektu/funkci libovolné množství argumentů.
    2) Nevím proč to tak je udělaný, ale je to pochopitelně blbost. Já používám:

    XXX::Iterator iter = foo.getIterator();
    while(iter.ha­sItems()) {
    X bar = iter.getNext(); ...
    }

    3) Autoři téhle koncepce měli představu, že by existující programy, kde se používá iterování přes ukazatele zobecnili a z ukazatele udělali iterátor. Proto se iterátor chová jako ukazatel

    4) dtto. Problém je v tom, že to je chybná úvaha. Měli naopak zvolit formu, kdy to jako ukazatel vypadat nebude a tím zbavit průměrnou programátorskou komunitu nutnosti učit se ukazatele.

    5) Typedef uprostřed není problém. Hodně často to používám zvlášť u šablon, kdy je pro mě lepší nějaké šílené konstrukci vyplývající z použití šablon dát jednoduché jméno. Je to prostě alias k danému typu.

    K bodům 1-4... taky jsem psal,buď STL, nebo nějakou výukovou knihovnu. Jako že jsou tu lidi, kteří na STL nedají dopustit, ale já osobně to považuju za disaster v normě C++ a každému doporučuju se tomu vyhnout (v praxi, teoreticky se vyplatí to znát). Další otázkou je, co tedy použít místo STL, tady vám neodpovím

    Poznámka na okraj. C++ není STL. STL je jedna z milionů knihoven v C++ a její jedinou výsadou je, že je součástí C++ normy. Nahlížejte na ní jako na cosi co by se dalo přirovnat k nářadí, které dostanete přibalené k nábytku pořízeného v Ikea. Ten nábytek s tím postavíte, ale rozhodně nedoporučuju to používat v profesionální dílně.