Kokujou schrieb:
darüber könnte man stundenlang diskutieren also versuch ich mich kurz zu fassen.
Könnte man - will ich aber eigentlich nicht. Ich wollte nur helfen.
Kokujou schrieb:
Exceptions sind für mich der einzig saubere Weg ein Fehlermodell zu transportieren.
In vielen Sprachen gibt es gar keine Exceptions. Und du sagst damit, all diese Sprachen haben ein unsauberes Fehlermodell.
Kokujou schrieb:
ich finde Exceptions immer noch schöner als irgendwelche gewrappten Datenobjekte zu haben
"Ich finde ... schöner" ist ja deine persönliche Meinung. Dann machs doch so - Ich finde es allerdings schwierig, dir zu "helfen", wenn du mit deiner vorgefertigten Meinung einen Post verfasst, ALLE sagen, dass es vielleicht nicht die beste Idee ist und du dann am Schluss trotzdem dabei bleibst.
Kokujou schrieb:
Wenn das allgemein anerkannt wäre, würden schon längst alle Funktionen so funktionieren und ein deraritges Framework wäre standard. Exception sind standard in so ziemlich allen Programmiersprachen.
if-Abfragen sind "standard" auch in so ziemlich allen Programmiersprachen... ich kann sie trotzdem falsch benutzen. Bei Exceptions ist es durch die höhere Komplexität nur wesentlich einfacher, sie falsch zu benutzen.
Kokujou schrieb:
Ihr habt Rehct sie sind manchmal ziemlich imperformant, was ich ehrlich gesagt kompletten Schwachsinn finde. Essentiell ist eine Exception nichts weiter als ein return Statement mit einem festen Basistyp, also warum müssen ide das unbedingt so einbauen dass irgendein Voodoo die Performance verringert?
Mit dieser Ausführung sieht man, dass du Exceptions noch nicht so richtig durchdrungen hast. Es ist KEIN return-Statement, sondern viel viel komplexer. Die "schlechte Performance" hat einen Grund. Exceptions sind Objekte (groß), die den ganzen Ausführungskontext (groß) mitschleppen müssen und deren Behandlung auch über den Kontext hinaus (groß) erforderlich ist, weil sie nicht an Ort und stelle gefangen oder behandelt werden müssen. Zusätzlich ist ein try/catch statement erforderlich, damit sie dir nicht Unhandled um die Ohren fliegt. Lies das hier mal... das ist sehr informativ:
https://docs.microsoft.com/en-us/archive/blogs/cbrumme/the-exception-model
Vielleicht mal ein praktisches Beispiel für den Umfang von Exceptions (für ALLE Leser, nicht nur für dich). Füge mal folgenden Code ein und kompiliere ihn:
C#:
private int DoSomething()
{
try
{
return 0;
}
finally
{
return 1;
}
}
Es wird nicht gehen. Weil das finally NACH dem Return ausgeführt werden würde. In manchen Sprachen gibt die Funktion 1 zurück, in manchen fängt es der Compiler ab. Aber 0 wird nie zurück gegeben, weil das finally IMMER ausgeführt wird, sogar nach dem return noch.
Deswegen Finde ich Exceptions nicht so toll. Sie ermöglichen dir, die Fehlerbehandlung an einen anderen Ort zu verlagern oder eben auch EINEN Fehlerhandler für viele viele Fehler zu schreiben bzw. sie komplett zu ignorieren, ohne das der Compiler meckert. Das ist Mist. Fehler behandelt man lieber spezifisch. Es ist mehr Arbeit, aber sehr viel wartungsfreundlicher und verständlicher, den Fehler an Ort und Stelle zu behandeln.
Kokujou schrieb:
Und das mit dem 1-2 Attribute sparen: In dem Moment wo du für ein Objekt zweimal einen Typ angeben musst hast du bei Clean Code versagt und in dem Moment wo diese typen nicht zwangsweise überein stimmen müssen und ein Build mit unterschiedlichen Typen durchgehen würde ist die Type Safety im Eimer, so einfach ist das.
Ohje... mir gefällt deine Argumentation immer weniger. Ich sehe viele Dinge SEHR anders und ich denke ich bin hier raus... wenn Clean Code als Argument kommt, werde ich immer nervös ;-) Die meisten haben das Buch nicht mal gelesen. Falls du es noch nicht gelesen hast (und ich meine wirklich gelesen, so mit in die Hand nehmen und jede Seite verstehen), dann machs mal. Das Buch ist echt gut. Falls doch, nimms vielleicht noch mal in die Hand :-) Und sieh es nicht so dogmatisch was da drin steht, nicht alles dadrin ist allgemeingültig.