Odpovídáte na názor ke článku Skrytá úskalí vícenásobné dědičnosti v C++.
[28] Není třeba psát nic do dokumentace :-) Stačí jen dodržet určitá pravidla, která mnozí z nás odmítají dodržovat. Třeba to, že v C++ může vyletět vyjimka odkudkoliv, kromě od funkcí, které mají vyjimky vypnuté / throw() /. Ano, je to změna stylu programování oproti klasickému C, ale opravdu doporučuju si na to zvyknout. Právě chtrých ukazatelů bych se nebál, protože se neliší od běžných ukazatelů, akorát za člověka řeší právě ty situace, které normálně řeší odchytáváním kdejaké vyjimky ... často úplně zbytečně ... jen proto, aby funkce po sobě uklidila ... přestože tohle je věc, která patří do destruktorů... a věřte mi, překladač ten úklid pomocí destruktorů zvládne mnohem lépe, než vy ručně. Díky tomu se nemusím soustředit na chyby ani na úklid a udělám víc práce. Porovnejte si tyto dva kódy
bool foo() {
char *str = allocString("hello world");
if (str == 0) return false;
if (!printString(str)) {
deallocString(str);
return false;
}
//... dalsi cast kodu
deallocString(str);
return true;
}
void foo() {
String str("hello world"); //vyhodi vyjimku kdyz se to nepodari
printString(str); //vyhodi vyjimku kdyz se to nepodari a automaticky uklidi
} //automaticky uklidi str.
A to kdy se řeší a neřeší každý bajt. Já řeším každý bajt v C++ :-) Dá se to, ale na některá úskalí s tím spojené budu upozorňovat na rootu.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 605×
Přečteno 27 722×
Přečteno 26 403×
Přečteno 24 367×
Přečteno 22 864×