Archiv der Kategorie: Grundlagen

Fließkommazahlen: Nicht immer so genau, wie man denkt

Bereits das ein oder andere mal habe ich in diversen Foren und auch hier im Blog behauptet, daß Fließkommazahlen vom Type Float (oder auch Single) ihre höchste Genauigkeit im Bereich von -1.0 bis 1.0 haben. Und auch immer hatte ich mir vorgenommen, dies ein wenig genauer auszuführen, was ich hiermit endlich machen möchte.
Lies den Rest dieses Beitrags

Facepalm: Nicht alle Codepfade geben einen Wert zurück

In meiner neuen Rubrik Facepalm werde ich kurz und knackig kleine Tipps und Hilfen geben, die irgendwo gefragt wurden oder auf die ich gerade gestoßen bin. Eine Facepalm ist die Geste, die man macht, wenn man die Hand vor’s Gesicht schlägt wenn man sagt „Warum bin ich da nicht selbst drauf gekommen?“.

Die Artikel dieser Rubrik werden sehr kurz sein, denn es handelt sich schliesslich um einfache Probleme 🙂

In diesem ersten Beitrag geht es um die Fehlermeldung „Nicht alle Codepfade geben einen Wert zurück“, die z.B. in folgender Methode vom Compiler geworfen wird:

public int SinnDesLebens(bool provoziereFehler)
{
  if (provoziereFehler == false)
  {
    return 42;
  }
}

Der Grund für diesen Fehler ist sehr einfach: Ein Rückgabewert in einer C#-Funktion ist nicht optional, sondern es muss in jedem Fall ein Wert zurückgegeben werden. Im obigen Beispiel wird aber kein Wert zurückgegeben, wenn provoziereFehler den Wert true enthält.

Beheben kann man diesen Fehler ganz einfach, in dem man entweder im Else-Zweig oder nach der If-Abfrage einen Wert zurückgibt, z.B. eine -1 um ein Problem anzuzeigen.

public int SinnDesLebens(bool provoziereFehler)
{
  if (provoziereFehler == false)
  {
    return 42;
  }

  return -1;
}

Verweise und Referenzen, oder: Wie greife ich auf die Game-Klasse zu?

In den letzten Wochen und Monaten musste ich in den Foren und Communities, in denen ich mich so rumtreibe immer wieder eine ganz bestimmte Frage lesen und beantworten. Auch in der Liste mit Suchanfragen, die auf meinen Blog geführt haben, sind immer wieder Hinweise auf diese Frage zu finden. Eine Frage, die immer wieder von den Einsteigern in die Spieleentwicklung mit XNA gestellt wird und anscheinend eine recht große Hürde darstellt.

Wie kann ich in einer anderen Klasse auf die Game-Klasse zugreifen?

Dies ist eine sehr gute Frage, führt aber immer wieder zu erhitzten Gemütern, da diese Frage halt sehr häufig gestellt wird und eigentlich absolutes Grundlagenwissen darstellt. Zum Glück ist die Frage nicht sonderlich schwer zu beantworten und daher werde ich das jetzt in diesem kleinen Beitrag auch machen.

Lies den Rest dieses Beitrags

Gerüchteküche: Erzeugen StateObjects Garbage?

Es ist schnell, einfach und oft auch übersichtlicher, wenn man Objekte, die man benötigt erst dann instanziiert, wenn man sie benötigt, bzw. besser gesagt, kurz davor. Dies ist auch grundsätzlich nicht verkehrt, allerdings ist dies bei der Entwicklung von Spielen nicht unbedingt immer sinnvoll. Zum einen kostet das Erzeugen von Objekten natürlich Zeit und zum anderen bekommt der Garbage Collector (wenn er denn vorhanden ist, so wie es in C# und Java der Fall ist) unter Umständen etwas zu tun. Dies kann schnell dazu führen, daß soviel Zeit mit dem Aufräumen verbracht wird, daß das Spiel nicht mehr schnell genug ausgeführt wird.

In dieser neuen Kategorie meines Blog möchte ich in Zukunft Behauptungen untersuchen und auf ihre Richtigkeit beleuchten, ganz nach dem Vorbild der Myth Busters, allerdings mit weniger Knalleffekt. Diese Kategorie nenne ich Gerüchteküche.

Das erste Thema wurde mal wieder durch einen Forenbeitrag im XNA.mag angeregt und da ich an dieser Behauptung vermutlich nicht ganz unschuldig bin, möchte ich dies zum Anlass nehmen und dieses Mysterium aufklären.

Lies den Rest dieses Beitrags

Exception Handling

Exception Handling ist wichtig und kann in vielen Situationen sehr hilfreich sein. Trotzdem ist das Wissen darüber bei vielen Einsteigern und auch Fortgeschrittenen sehr begrenzt. Viele falsche Annahmen werden über Exceptions gemacht und oft werden diese auch vollkommen falsch angewendet. Dabei sind Exceptions in einigen Situationen mehr als hilfreich, führen zu besserem und übersichtlicherem Code und in anderen Situationen kann man sie schlicht und einfach nicht ignorieren, da man ohne nicht auskommt.

Dieser Artikel ist eine Einführung in Exceptions, der Hintergrundwissen vermittelt und einige Anwendungsfälle von Exception Handling aufzeigt. Er ist an Einsteiger, aber auch Fortgeschrittene gerichtet und soll dem interessierten Leser einfach ein weiteres Werkzeug an die Hand geben, daß ihm die Entwicklung von guten, wartbaren und performanten Code ermöglicht.

Lies den Rest dieses Beitrags

%d Bloggern gefällt das: