"Cleaner, more elegant, and harder to recognize"
Ten článek má tři zásadní chyby:
...
Netvrdim, ze je clanek bezchybny (taky je uz HODNE stary - coz ilustruje zminka o RAII jako o necem neobvyklem), ale me ve sve dobe primel hluboce se zamyslet nad vlastnim konceptem vyjimky, ktera je z principu urcita forma "nelokalniho skoku" a jako takova vnasi do programu skrytou komplexitu, ktera je maskovana za na prvni pohled jednodussi kod, ktery je ovsem roztrousen na mnohem vice mistech. "Hloupe" C-ckove osetrovani navratovych hodnot a odporna hromada if-u pro kazde volani sice neni hezka, ale je LOKALNI - vse je na jednom miste.
Ja vidim pointu v pripade vetsiho projektu, na kterem se podili vetsi mnozstvi ruzne schopnych lidi: pokud pisete v C a otrocky osetrujete kazde volani (a mohou vam to automaticky kontrolovat ruzne nastroje), je celkem trivialni prostym pohledem na cizi (!!) kod jedne funkce/metody zjistit, zda je vse osetreno a behem chvile vite, zda je kod v poradku a nebo neni. V pripade vyjimek to pohledem zjistit nelze, protoze MUSITE odskocit na implementaci kazde volane funkce/metody (je to cizi kod, ktery neznate!!) a overit si co vyhazuje/zachycuje.
Navic jak zde nekolikrat padlo, 100% dodrzovat RAII je TEZKE a kontrolovat dodrzovani RAII v teamu 10+ lidi, pri blizici se deadline je to TEMER NEMOZNE. Toto bych rad zduraznil, protoze to ilustruje cely muj problem c C++. C++ MUZE BYT relativne moderni jazyk (ehm..), bez nebezpecnych pasti a neustalych SEGFAULTu - ale vyzaduje to KAZEN A DISCIPLINU pri psani kodu.
Naproti tomu kod v C, pri dodrizovani KAZNE A DISCIPLINY (a pouziti treba gobject knihovny) muze byt relativne moderni (ehm, ehm, ehm!), bez nebezpecnych pasti a neustalych SEGFAULTu.
Tedy z tohoto pohledu jsou temer EKVIVALETNI (jediny vetsi rozdil je ze kod v c++ je tak o 20-30% kratsi). Jediny PODSTATNY rozdil je pak to, jak dobre je mozne ZARUCIT, ze vsichni clenove teamu budou dodrzovat kazen a disciplinu. A zde C++ prohrava na cele care.
Co jsem tim vsim chtel/nechtel rict: netvrdim ze vyjimky jsou "spatne", ale ze jejich pouzivani ma i svou odvracenou stranu a je dobre byt si vedom toho, ze se jedna o velmi zakerne skrytou komplexitu, ktera se maskuje kratsim a citelnejsim kodem. A TO beru jako hlavni poselstvi toho, dnes jiz ponekud zastaraleho, clanku.