Exceptions против Error checking
15 отговора
700 прегледа
Iako!!! :))
In general, I have to admit that I’m a little bit scared of language features that hide things. When you see the code
i = j * 5;
… in C you know, at least, that j is being multiplied by five and the results stored in i.
But if you see that same snippet of code in C++, you don’t know anything. Nothing. The only way to know what’s really happening in C++ is to find out what types i and j are, something which might be declared somewhere altogether else. That’s because j might be of a type that has operator* overloaded and it does something terribly witty when you try to multiply it. And i might be of a type that has operator= overloaded, and the types might not be compatible so an automatic type coercion function might end up being called. And the only way to find out is not only to check the type of the variables, but to find the code that implements that type, and God help you if there’s inheritance somewhere, because now you have to traipse all the way up the class hierarchy all by yourself trying to find where that code really is, and if there’s polymorphism somewhere, you’re really in trouble because it’s not enough to know what type i and j are declared, you have to know what type they are right now, which might involve inspecting an arbitrary amount of code and you can never really be sure if you’ve looked everywhere thanks to the halting problem (phew!).
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
i = j * 5;
… in C you know, at least, that j is being multiplied by five and the results stored in i.
But if you see that same snippet of code in C++, you don’t know anything. Nothing. The only way to know what’s really happening in C++ is to find out what types i and j are, something which might be declared somewhere altogether else. That’s because j might be of a type that has operator* overloaded and it does something terribly witty when you try to multiply it. And i might be of a type that has operator= overloaded, and the types might not be compatible so an automatic type coercion function might end up being called. And the only way to find out is not only to check the type of the variables, but to find the code that implements that type, and God help you if there’s inheritance somewhere, because now you have to traipse all the way up the class hierarchy all by yourself trying to find where that code really is, and if there’s polymorphism somewhere, you’re really in trouble because it’s not enough to know what type i and j are declared, you have to know what type they are right now, which might involve inspecting an arbitrary amount of code and you can never really be sure if you’ve looked everywhere thanks to the halting problem (phew!).
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: Exceptions против Error checking
шибат го и е чифут, но статията не е лоша. в тоя пост става въпрос за статията ако не си забелязал...
Re: Iako!!! :))
Аз не виждам какъв е големия проблем да overload-ваш operator*. Кво - ако си написал клас за матрици или вектори, не е ли тъпо да не го направиш? Сигурно има капани, но определено е естествено.
Re: Iako!!! :))
Вярно е. Но познавам хора, които като нищо биха направили overload на оператор-* за стринг, които например да прави ривърс. 
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: Iako!!! :))
Еее, айде викането на функция да е явно.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: Iako!!! :))
Да го оставят 1 ден да пише вместо Str3= Str1 & " kosam " & Str2
Str3 = Append(Str1, "kosam")
Str3 = Append(Str3, Str2)
да го видим на другата сутрин кви ша ги наизпише
Лека нощ
Str3 = Append(Str1, "kosam")
Str3 = Append(Str3, Str2)
да го видим на другата сутрин кви ша ги наизпише
Лека нощ
Re: Exceptions против Error checking
Чак сега я дочетох статията - Дж тоя път май освен да преразкаже няколко блога нищо не е написал... що ли му става навик.
И както винаги скромен:
Of course millions of people jumped down my throat. The only person in the world who leapt to my defense was, of course, Raymond Chen, who is, by the way, the best programmer in the world, so that has to say something, right?
Лека нощ
И както винаги скромен:
Of course millions of people jumped down my throat. The only person in the world who leapt to my defense was, of course, Raymond Chen, who is, by the way, the best programmer in the world, so that has to say something, right?
Лека нощ
Мда, статията показва,....
...че красноречието е също толкова важно, колкото и конкретните знания.
Представи си че си ентусиазиран новак, решил да посвети живота си на програмирането и прочете статия от тоя тип, написана по убедителен начин и т.н. При липса на опит, знания и точка за сравнение - ставаш върл противник на изключенията и привърженик за унгарската нотация. Без да се замисляш.
Представи си че си ентусиазиран новак, решил да посвети живота си на програмирането и прочете статия от тоя тип, написана по убедителен начин и т.н. При липса на опит, знания и точка за сравнение - ставаш върл противник на изключенията и привърженик за унгарската нотация. Без да се замисляш.
Re: Exceptions против Error checking
Ти виждал ли си чифут да не лъже?
Каквото и да използваш, и както и на каквото да пишеш, можеш или да осереш всичко, или да го напишеш чисто, разбрано и на всичкото отгоре и да работи.
Мразя дървени философи, които от няма кво да правят почват да измислят безполезни глупави теории.
Каквото и да използваш, и както и на каквото да пишеш, можеш или да осереш всичко, или да го напишеш чисто, разбрано и на всичкото отгоре и да работи.
Re: Мда, статията показва,....
Оставям изключенията на страна, но ти прочете ли статията внимателно?
Пробва ли се да му разбереш тезата за Унгарската нотация?
Пробва ли се да му разбереш тезата за Унгарската нотация?
Re: Мда, статията показва,....
"Оставям изключенията на страна, но ти прочете ли статията внимателно?
Пробва ли се да му разбереш тезата за Унгарската нотация?
"
E?
Пробва ли се да му разбереш тезата за Унгарската нотация?
"
E?