Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Renegade123

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

21

30.11.2012, 21:48

Ich finde das Thema Glaubhaftigkeit in der Programmierung äußerst kompliziert. Wer sagt mir im Allgemeinen das ich eher einem Fremden aus einen Internetforum trauen kann, als einen Buch was von "Profis" aus der Szene geschrieben und geprüft wurde. Ich hoffe du verstehst auch das Misstrauen meinerseits, denn ich habe für das Ding viel Geld bezahlt (zumindest für einen Studenten X( )

Ja, ich erkenne es, nicht nur scheinbar sondern vollends, an :) .

Um es noch einmal zusammen zu fassen: Man benutzt besser Konstruktoren mit Exceptiones statt ein Mix aus Konstruktore und Init-Methoden.

Kann das jemand nochmal kurz begründen?

lg René
Liebe Grüße,
René

FSA

Community-Fossil

  • Private Nachricht senden

22

30.11.2012, 21:55

Aber ist das nicht oft der Grund, weil es dann einfacher zu veranschaulichen wird? Ist mir zumindest aufgefallen. (bezogen auf BC)

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

23

30.11.2012, 22:02

Um es noch einmal zusammen zu fassen: Man benutzt besser Konstruktoren mit Exceptiones statt ein Mix aus Konstruktore und Init-Methoden.

Kann das jemand nochmal kurz begründen?

Wenn eine Init-Methode fehlschlägt, dann hast Du ein Objekt erzeugt, was Du nicht nutzen kannst. Das Objekt erzeugen und initialisieren ist aber genau die Aufgabe des Konstruktors. Ein erzeugtes Objekt sollte benutzbar sein. Dafür ist es da. Sonst hätte man den Konstruktor auch gleich komplett aus C++ raus lassen können. Er wurde aber zu diesem Zweck eingeführt. Und da ein Konstruktor keinen Wert zurück geben kann, ist eine Ausnahme (Exception) eben genau der richtige Weg. Ein Konstruktor sollte nie fehlschlagen dürfen. Wenn er das tut, dann ist das eine Ausnahme und nicht der Normalfall. Also ist es eine Exception und die sollte man da werfen.

Ähnlich verhält es sich mit vielen anderen Methoden. Sie haben einen Zweck und sollten entweder etwas zurückliefern oder nicht. Wenn sie etwas liefern sollten, dann geht ein Fehlercode nicht. Wenn sie nichts zurückgeben sollte, dann ist die Einführung eines Fehlercodes eine recht unsinnige Art der Verwendung der Methode. Auch hier sind Exceptions sinnvoller. Zudem eine Exception durch alle aufrufenden Methoden hindurch fliegt, bis sie jemand fangen und behandeln kann. Meist kann die aufrufende Methode nämlich mit einem Fehlercode gar nichts anfangen und muss diesen weiter nach oben reichen. Und damit schließt sich wieder der Kreis bezüglich Rückgabewerte. Würde man Fehlercodes verwenden, müsste *jede* Methode Fehlercodes zurückgeben und *jeder* Aufruf müsste geprüft werden. Das kann natürlich nicht Sinn der Sache sein.
Exceptions sind genau dafür da, eine sinnvolle Art und Weise zu bieten, um Fehler zu behandeln und Methoden nicht ihrer sinnvollen Rückgabewerte zu berauben. Auch Void ist übrigens ein sinnvoller Rückgabewert.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

30.11.2012, 22:09

Wer sagt mir im Allgemeinen das ich eher einem Fremden aus einen Internetforum trauen kann, als einen Buch was von "Profis" aus der Szene geschrieben und geprüft wurde.

Dein Misstrauen war und ist zumindest mir absolut verständlich. Ein weiterer Grund, wieso ich Leute gern dazu provoziere, sich selbst die Antworten zu liefern, anstatt zu erwarten, dass sie meine Antworten als gegeben akzeptieren... ;)

Kann das jemand nochmal kurz begründen?

Kurze Begründung: Weil es genau dafür Konstruktoren gibt...

Lange Antwort: Der Konstruktor wird garantiert immer aufgerufen. Für deine Init Methode gilt das nicht. In manchen Fällen wäre es möglich, das Objekt im Konstruktor in einen Defaultzustand versetzen, in dem es keinen Schaden anrichten kann. Das bedeutet aber auch, dass das Objekt eigentlich zweimal initialisiert wird, die Init Methode ist hier also auch noch unnötig ineffizient. Und spätestens wenn das nicht möglich ist, haben wir es mit einem Objekt zu tun, das sich in einem undefinierten Zustand befindet, in dem die einzige gültige Operation ist, init() aufzurufen. In jedem Fall ist es ein Programmierfehler, zwischen seiner Erzeugung und dem Aufruf der Init Methode irgendetwas mit dem Objekt zu machen. Ich würde sogar argumentieren, dass die erste Variante mit dem ungefährlichen Defaultzustand tatsächlich problematischer ist, denn wenn ich mit diesem Objekt vor init() irgendwas mache, hab ich gar keine Chance, dass mir beim Debuggen alles um die Ohren fliegt und ich so gleich auf den Fehler aufmerksam werde und ihn beheben kann. Aber angenommen der Benutzer macht alles richtig und ruft init() auf. Was passiert, wenn init() fehlschlägt? Dann hab ich hier ein Objekt, dessen Existenz sinnlos ist. Das einzige, was ich durch die Trennung von Konstruktion und Initialisierung gewonnen hab, ist mehr Möglichkeit, etwas falsch zu machen...

Init Methoden sind einfach nur ein Hack, mit dem Leute, die unter dem C Hacker Syndrome leiden, krampfhaft vermeiden wollen, C++ zu programmieren. Ein Workaround mit dem diese Leute versuchen, sich um Sprachmittel, die sie nicht ganz verstanden haben bzw. viel wahrscheinlicher: nicht verstehen wollen, herum zu schleichen.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (30.11.2012, 22:19)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

25

30.11.2012, 22:33

Woher kann ich denn bitte offensichtlich wissen, das hinter Synonymen wesentlich besser informierte Programmierer sitzen, wenn man nicht darüber diskutiert?

Naja, du solltest es mal relativ betrachten. Du hast wahrscheinlich kein ausführliches und aktuelles Buch zu C++ gelesen (oder C++ von A bis Z :pillepalle: ). Drakon und dot sind Supermoderatoren in dem Forum, das schon viele Jahre existiert und sie haben einige tausend Beiträge. Wenn man etwas aktiv im Forum ist merkt man, dass sie sehr kompetent sind. Ich hoffe, dass ich in den nächsten Jahren selbst mal so gut C++ beherrsche.

Aber ich gebe zu, dass ich etwas überreagiert habe. Bei falschen Empfehlungen sehe ich einfach rot. Ich glaub es kam deswegen zustande, weil du deine Vorposter einfach ignoriert hast. Das nächste mal wäre eine Formulierung wie: "Ich habe aber gelesen, dass ... was sagt ihr dazu?" angebracht.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

26

30.11.2012, 22:39

Drakon und dot sind Supermoderatoren in dem Forum, das schon viele Jahre existiert und sie haben einige tausend Beiträge. Wenn man etwas aktiv im Forum ist merkt man, dass sie sehr kompetent sind. Ich hoffe, dass ich in den nächsten Jahren selbst mal so gut C++ beherrsche.

Ich fühle mich natürlich geehrt *verbeug*, aber ich denk, ich sollte dazu doch unbedingt sagen, dass die Tatsache, dass unter meinem Namen "Supermoderator" steht (ich empfind den Namen dieses Titels ehrlich gesagt sogar eher als etwas unangenehm, weil er mir ein bisschen selbstherrlich klingt) und ich schon den ein oder anderen Beitrag hier geschrieben hab, mir nicht automatisch Glaubwürdigkeit verleiht. Und ich ermuntere jeden, alles, was ich so von mir gebe, aufs Gründlichste zu hinterfragen... ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (30.11.2012, 22:44)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

27

30.11.2012, 22:51

Und ich ermuntere jeden, alles, was ich so von mir gebe, aufs Gründlichste zu hinterfragen... ;)

Es liegt doch in der Natur eines guten Programmierers alles zu hinterfragen und am besten auch auszuprobieren.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

28

30.11.2012, 22:57

Und ich ermuntere jeden, alles, was ich so von mir gebe, aufs Gründlichste zu hinterfragen... ;)

Es liegt doch in der Natur eines guten Programmierers alles zu hinterfragen und am besten auch auszuprobieren.

exakt

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

29

01.12.2012, 00:06

Und ich ermuntere jeden, alles, was ich so von mir gebe, aufs Gründlichste zu hinterfragen... ;)

dann fange ich doch gleich mal damit an:

[...], aber ich denk, ich sollte dazu doch unbedingt sagen, dass die Tatsache, dass [...] ich schon den ein oder anderen Beitrag hier geschrieben hab, mir nicht automatisch Glaubwürdigkeit verleiht.

ich habe viele Beiträge geschrieben
ich bin Glaubwürdig
ich kann die Aussage über meine Glaubwürdigkeit bestätigen
und da ich Glaubwürdig bin, ist die Bestätigung der Aussage glaubwürdig
somit dürfte bewiesen sein, dass deine Aussage so nicht stimmt

Zitat


(Link)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

30

01.12.2012, 10:01

:P

Werbeanzeige