.[ ČeskéHry.cz ].
Vyjimky (Exceptions) v hernim prumyslu
Jdi na stránku Předchozí  1, 2, 3, 4, 5  Další
 
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
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 17. červen 2013, 09:36:17    Předmět: Odpovědět s citátem

Dobře, ale pokud budeš někde prohlašovat, že to je správné použití dynamic_cast, budeš mít co do činění se mnou! :-) :-D
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



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

PříspěvekZaslal: 17. červen 2013, 09:44:58    Předmět: Odpovědět s citátem

Používám často i renterpret_cast Twisted Evil
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 17. červen 2013, 09:49:19    Předmět: Odpovědět s citátem

Tak záleží jak to používáš, ale věřím, že dobře ;-).

Nicméně, zdá se, že sme původní diskuzi obrátili špatným směrem :)
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
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: 17. červen 2013, 09:51:54    Předmět: Odpovědět s citátem

#semo - jen pseudo-kód narychlo nasypaný do pastebinu Laughing - bere ještě parametr (ten se někde ztratil), bylo to psáno v rychlosti, jelikož momentálně mám dost napilno -.-'
_________________
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
Lemik



Založen: 30. 07. 2007
Příspěvky: 138

PříspěvekZaslal: 19. červen 2013, 10:27:34    Předmět: Odpovědět s citátem

mar napsal:
Výjimky v C++ potenciálně můžou vést k resource leakům


Pak to chce použít unique_ptr nebo shared_ptr. Jinak je to stále o návrhu - tedy pokud to nechceme mermomocí nacpat na nějaký legacy kód, ale i tam už mi shared_ptr pomohl...

Mimochodem nezapomeňte, že standardní knihovna C++ (hezky jsem se to vyhnul zkratce STL) dovoluje i použít vlastní kód jako alokátory, deletery, compare aj. Nemusíte nutně používat standardní implementaci.



Předávání parametrů (argumentů) pomocí hodnoty, namísto reference, je podle mě díky špatnému vyučování už od začátku... Ty různé knihy pro C++ či game development s kódem C++ to často mají špatně, anebo velmi nedostatečně vysvětlené. Případně ještě vyučují "pseudo" C/C++.

K tomu, když ještě přihodíme "poučky" jako:
- pokud možno, vracej návratovou hodnotu z funkce pomocí hodnoty (copy elision optimalizace)
- parametry funkcí (i funkce samotné a etc.) specifikuj jako const, pokud z argumentu jen čteš a nezapisuješ do něj - kompiler pak dohlíží na to, že const je opravdu splněno...
Nakonec si pak můžeme říci, jestli C++ není špatně navrženo už od základů. To ale platí pro každý jazyk (nejen programovací). Pokud se ale jazyk používá dobře...



Vilem Otte:
Jasně, takový kód/příklad špatně ukazuje použití exceptions. Kdyby to ale byl vstup, který zadává uživatel a exception zůstává lokální (není rethrow), pak můžeš uživatele upozornit a zkusit to znovu - to je ale o tom vyučování. Člověk by musel chodit a všude přepisovat příklady, kapitoly v knihách atd.

perry:
Ti potomci mají typ známý v době kompilace, nebo je tam házíš např. načtením z jiné knihovny apod?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 19. červen 2013, 11:32:36    Předmět: Odpovědět s citátem

Lemik napsal:

- pokud možno, vracej návratovou hodnotu z funkce pomocí hodnoty (copy elision optimalizace)
- parametry funkcí (i funkce samotné a etc.) specifikuj jako const, pokud z argumentu jen čteš a nezapisuješ do něj - kompiler pak dohlíží na to, že const je opravdu splněno...
Nakonec si pak můžeme říci, jestli C++ není špatně navrženo už od základů.

Tučně vyznačenou větu vyvozuješ z těch dvou nahoře? Nějak nechápu, co je špatnýho na const a výsledcích funkce hodnotou. C++ prostě neni pro skriptery :-).
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



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

PříspěvekZaslal: 19. červen 2013, 12:55:10    Předmět: Odpovědět s citátem

Bjarne se jednou nechal slyšet, že kdyby C++ designoval znova, jediné co by udělal jinak by bylo, že by obrátil logiku "const" ...tedy vše je "const" dokud nespecifikuješ jinak.
Ale pak: Existují jen dva druhy programovacích jazyků: Ty na které všichni nadávají a ty které nikdo nepoužívá.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



Založen: 16. 06. 2012
Příspěvky: 602

PříspěvekZaslal: 19. červen 2013, 13:29:15    Předmět: Odpovědět s citátem

Lemik napsal:
Nakonec si pak můžeme říci, jestli C++ není špatně navrženo už od základů.

Tak nic není dokonalé. Pokud neznáš, zkus mrknout na D, kdysi to bylo jednodušší a celkem pěkné, nicméně to stejně nemá šanci prorazit, protože to je one man show, jen tak pro zajímavost.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



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

PříspěvekZaslal: 19. červen 2013, 14:09:11    Předmět: Odpovědět s citátem

mar napsal:
Lemik napsal:
Nakonec si pak můžeme říci, jestli C++ není špatně navrženo už od základů.

Tak nic není dokonalé. Pokud neznáš, zkus mrknout na D, kdysi to bylo jednodušší a celkem pěkné, nicméně to stejně nemá šanci prorazit, protože to je one man show, jen tak pro zajímavost.

A Alexandrescu je současně i velkým C++ expertem.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



Založen: 16. 06. 2012
Příspěvky: 602

PříspěvekZaslal: 19. červen 2013, 14:11:08    Předmět: Odpovědět s citátem

Tringi napsal:

A Alexandrescu je současně i velkým C++ expertem.

O tom žádná, nicméně AFAIK D vyvíjí Bright Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 19. červen 2013, 14:28:25    Předmět: Odpovědět s citátem

Tringi napsal:
Bjarne se jednou nechal slyšet, že kdyby C++ designoval znova, jediné co by udělal jinak by bylo, že by obrátil logiku "const" ...tedy vše je "const" dokud nespecifikuješ jinak.


v rust-lang.org bylo zavedeno "mut" protoze vse je defaultne immutable. Zrovna na hry je to podle me velmi vhodny a prakticky jazyk. Je sice jeste hodne mlady a trpi par problemy (napriklad pomala kompilace) ale stoji za zkouknuti.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



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

PříspěvekZaslal: 19. červen 2013, 14:33:41    Předmět: Odpovědět s citátem

Tringi napsal:
mar napsal:
Lemik napsal:
Nakonec si pak můžeme říci, jestli C++ není špatně navrženo už od základů.

Tak nic není dokonalé. Pokud neznáš, zkus mrknout na D, kdysi to bylo jednodušší a celkem pěkné, nicméně to stejně nemá šanci prorazit, protože to je one man show, jen tak pro zajímavost.

A Alexandrescu je současně i velkým C++ expertem.

Ah, ověřil jsem si stav, a dělají na tom stále oba ...z nějakého obskurního důvodu jsem si myslel že Bright odstoupil z aktivního vývoje.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Lemik



Založen: 30. 07. 2007
Příspěvky: 138

PříspěvekZaslal: 19. červen 2013, 17:01:27    Předmět: Odpovědět s citátem

]semo[ napsal:
Lemik napsal:

- pokud možno, vracej návratovou hodnotu z funkce pomocí hodnoty (copy elision optimalizace)
- parametry funkcí (i funkce samotné a etc.) specifikuj jako const, pokud z argumentu jen čteš a nezapisuješ do něj - kompiler pak dohlíží na to, že const je opravdu splněno...
Nakonec si pak můžeme říci, jestli C++ není špatně navrženo už od základů.

Tučně vyznačenou větu vyvozuješ z těch dvou nahoře? Nějak nechápu, co je špatnýho na const a výsledcích funkce hodnotou. C++ prostě neni pro skriptery Smile.


Vůbec ne. Narážím na to, že to je většinou špatně vyučované už od začátku, kdy máš v knize příklady jako:
int add ( int value1, int value 2 )
namísto
int add( const int& value1, const int& value2 )
(a to dokonce i v knize o algoritmech...)

Když pak přijde nějaký "typický" C/C++ programátor, tak jazyk nepoužívá správně, neví pořádně co jazyk nabízí a umožňuje. Pro ně je ten jazyk špatný, neefektivní a mají tendenci si to dělat po svém. (Setkal jsem se i s případem, který si implementoval vlastní linked list a přepisoval algoritmy, protože mu to neběželo dost rychle, a přitom to byl debug build...)

Když jim ukážeš, jak se to má dělat, co asi většinou řeknou? Jen málo z nich pochopí, proč ty poučky mají smysl a jak fungují, nebo se nad tím alespoň zamyslí.

BTW jsem milovníkem "strongly typed" compiled languages, a C++11 považuji za hlavního koně(-;
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 602

PříspěvekZaslal: 19. červen 2013, 17:37:53    Předmět: Odpovědět s citátem

Lemik napsal:
int add ( int value1, int value 2 )
namísto
int add( const int& value1, const int& value2 )
(a to dokonce i v knize o algoritmech...)

Tak tohle není zrovna dobrý příklad. Elementární datové typy, co se vejdou do registru, nemá smysl předávat referencemi (pokud nejsou výstupní) - co je jednodušší, sečíst dvě hodnoty nebo dereferencovat dva ukazatele a sečíst výsledek? Samozřejmě za předpokladu, že to překladač nezoptimalizuje. U objektů je situace jiná, pointa byla vyhnout se kopírování objektů.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 24. červen 2013, 13:17:54    Předmět: Odpovědět s citátem

Lemik napsal:
Vůbec ne. Narážím na to, že to je většinou špatně vyučované už od začátku, kdy máš v knize příklady jako:
int add ( int value1, int value 2 )
namísto
int add( const int& value1, const int& value2 )
(a to dokonce i v knize o algoritmech...)


hele narazil jsem na to ted na IRC - proc je prvni tak spatne a to druhe tak dobre? mohl bys to popsat?
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
Jdi na stránku Předchozí  1, 2, 3, 4, 5  Další
Strana 3 z 5

 
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