.[ ČeskéHry.cz ].
auto v c++11/14

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 31. červenec 2013, 18:37:27    Předmět: auto v c++11/14 Odpovědět s citátem

Co si myslíte o používání auto? Usnadňuje to dle vás práci, nebo naopak vede k nepřehlednosti?

V nové verzi má být možnost použít auto i u návratového typu metod.
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 31. červenec 2013, 19:04:11    Předmět: Odpovědět s citátem

Osobně si myslím, že to znepřehledňuje kód, ale obecně mám k C++11 averzi, takže můj názor není objektivní (neptejte se proč ho nemám rád, sám to pořádně nevím Very Happy ).
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 31. červenec 2013, 19:24:58    Předmět: Odpovědět s citátem

Já sám ho nepoužívám, dle mého také znepřehledňuje kód. Nicméně u návratových typů bych s tím byl opatrný - může to způsobit hodně bordelu (snad bude u type-mismatch v takovém případě rozumný warning/error, protože podle mě rozumný (třeba i standardizovaný) error a warning formát rozhodně všem kompilátorům C++ chybí).

Ostatně jakýkoliv error z STL je bloody mess, a u tohoto očekávám stejně - a bude to úplně stejně debilně použitelné jako STL. Nedejbože to debugovat.
_________________
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 31. červenec 2013, 19:25:20    Předmět: Odpovědět s citátem

Osobní zkušenost zrovna s tímhle nemám, ale předpokládám, že to je podobné jako "var" v C# ... v tom případě, občas se to hodí, ale obecně to nesnáším, protože to strašně znepřehledňuje kód. (Nebo viz třeba automatické typy v PHP... hrozný Smile)
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 31. červenec 2013, 19:38:47    Předmět: Odpovědět s citátem

Za sebe: přijde mi to třeba použitelné a lambda funkcí..

kód:

auto lambdaFunkce = [this, loc](int par1) -> bool
{
};


Ale jinak si taky spíš myslím, že to v obecnosti může znepřehledňovat kód.
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Mantharis



Založen: 28. 07. 2007
Příspěvky: 39

PříspěvekZaslal: 31. červenec 2013, 19:57:35    Předmět: Odpovědět s citátem

Auto v C++ rozhodne chybelo...konecne clovek nemusi psat ke vsem templatam traity. Skoro vsude mimo genericky kod to vsak zavani prasarnou Cool
_________________
If the God gave us the source code we could bug the world.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 31. červenec 2013, 20:36:43    Předmět: Odpovědět s citátem

Taky si myslím, že to svoje využití má. Na druhé straně bych to nepřeháněl, asi jako skoro se vším v C++.

Ideální použití je podle mě třeba případ cyklu:
kód:
for(QVector<std::shared_ptr<rce::motion::TargetState> >::iterator i = vector.begin(); i != vector.end(); ++i)


Zvlášť když se těch parametrů templatu sejde víc, tak je to hrozný.
Někdy to řeším typedefem (když je vektor členem třídy), ale myslím, že auto by tady mohlo čitelnosti spíš pomoct (lepší než for na 2 řádky).
Ikdyž v C++11 by se tady asi měl spíš použít range for.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1821

PříspěvekZaslal: 31. červenec 2013, 21:14:22    Předmět: Odpovědět s citátem

Konecne sa clovek (a firma!!!) zbavi vsetkych zbytocnych typedefov a miliona templatov a makier a nazvov iteratorov na dva riadky. Na rozumne veci, ktore skratia kod je auto super a mozem vrelo doporucit. Na niektore nove veci je dokonca NEVYHNUTNE. Ale s tym rozumne. Podobne odporucam "kratku" lambdu. Bezne sa pouziva aj v produkcnom kode a fakt to v C++ chybalo.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1552

PříspěvekZaslal: 1. srpen 2013, 09:39:56    Předmět: Odpovědět s citátem

auto někdy zmate některá C++ IDE, takže pak nefunguje autocomplete. Jinak v tom nevidím problém. Často to používám např. takto:
kód:
std::set<std::string> v;
// ...
for (auto& it : v)
{
    std::string& s = *it;
    // ...
}

_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
vitamin



Založen: 31. 07. 2013
Příspěvky: 7

PříspěvekZaslal: 1. srpen 2013, 10:05:52    Předmět: Odpovědět s citátem

frca napsal:

foreach dereferencuje iterator, takze si asi chce nieco taketo (auto vobec netreba):
kód:

    std::set<std::string> v;
    // ...
    for (const std::string& s : v)   
    {

        // ...
    }

Podla mna sa auto hodi tam kde sa z mena premennej alebo kontextu da lahko vydedukovat typ:

kód:

std::string s = /*....*/;
auto string = /*...*/;    //meno premennej je dostatocne vystizne
auto str = std::string("");   //netreba zadavat 2x typ

std::vector<int> c{1, 2, 3};
for(auto i = c.begin(); i != c.end(); ++i){/*...*/}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



Založen: 28. 07. 2007
Příspěvky: 289

PříspěvekZaslal: 1. srpen 2013, 10:29:13    Předmět: Odpovědět s citátem

Používám, na spoustě míst, považuji nové "auto" za jedno z nej zlepšení v C++11.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
nou



Založen: 28. 07. 2007
Příspěvky: 1047

PříspěvekZaslal: 2. srpen 2013, 07:03:56    Předmět: Odpovědět s citátem

tiez sa pripajam k tomu ze pouzivat to rozumne. teda viac menej pre tie niekedy sialene template typy. moznost pouzit pri navratovom type ale velmi zneprehladnuje kod a moze viest k naozaj zlym chybam.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna