Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 31. červenec 2013, 18:37:27 Předmět: auto v c++11/14 |
|
|
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 |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 31. červenec 2013, 19:04:11 Předmět: |
|
|
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 ). _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
Vilem Otte
Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 31. červenec 2013, 19:24:58 Předmět: |
|
|
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 |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 31. červenec 2013, 19:25:20 Předmět: |
|
|
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ý ) _________________ Perry.cz |
|
Návrat nahoru |
|
|
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 31. červenec 2013, 19:38:47 Předmět: |
|
|
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 |
|
|
Mantharis
Založen: 28. 07. 2007 Příspěvky: 39
|
Zaslal: 31. červenec 2013, 19:57:35 Předmět: |
|
|
Auto v C++ rozhodne chybelo...konecne clovek nemusi psat ke vsem templatam traity. Skoro vsude mimo genericky kod to vsak zavani prasarnou _________________ If the God gave us the source code we could bug the world. |
|
Návrat nahoru |
|
|
Deluxe
Založen: 31. 07. 2007 Příspěvky: 235 Bydliště: Oslavany
|
Zaslal: 31. červenec 2013, 20:36:43 Předmět: |
|
|
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 |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 31. červenec 2013, 21:14:22 Předmět: |
|
|
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 |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 1. srpen 2013, 09:39:56 Předmět: |
|
|
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 |
|
|
vitamin
Založen: 31. 07. 2013 Příspěvky: 7
|
Zaslal: 1. srpen 2013, 10:05:52 Předmět: |
|
|
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 |
|
|
Tringi
Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 1. srpen 2013, 10:29:13 Předmět: |
|
|
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 |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 2. srpen 2013, 07:03:56 Předmět: |
|
|
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 |
|
|
|