Archiv der Kategorie: Software-Entwicklung

Programmierung und Tools.

Java – Achtung Falle: Boolean parsen

Heute musste ich aus einem XML-File eine Boolean-Konfiguration laden. Das habe ich nicht das erst mal gemacht, aber es ist auch nichts, was ich täglich mache:

Element node = element.getChild("Editor");
String str = node.getAttributeValue("Overwrite"); 
// str hat "true"
m_settings = new EditorSettings(Boolean.getBoolean(str));

Bitte einfach mal den Code auf sich wirken lassen… Weiterlesen

Objekte anstatt Null-Referenzen

Können Sie sich noch an den Milliarden-Dollar-Fehler von Tony Hoare erinnern?

Jedenfalls bringt die Null-Referenz (in C++ der Null-Zeiger) viele Programmierer zur Verzweiflung. Denn man tappt immer wieder in die Falle, das eine Referenz Null sein kann. Wenn man diese nicht vor der Benutzung prüft, gibt es einen Absturz. Und dieser Fehler führte weltweit seit seiner Erfindung zusammen gerechnet wohl zu eine Milliarde-Dollar Kosten.

Sie erleben den Fehler und umgehen diesen deshalb so oder ähnlich:

void bar(Type r) {
   if(r != null)
      r.foo();
}
TypeList r = search();
if(r != null)
   r.foo();

Die if-Abfragen sind doch unnötiger Ballast und haben nichts mit der eigentlich zu lösenden Aufgabe (Algorithmus) zu tun. Diese if-Abfragen machen nur deutlich, dass die API oder Programmiersprache anscheinend nicht vertrauenswürdig genug ist. Überall sind diese „Stützräder“ und machen den Code unleserlicher und lenken vom eigentlichen Code ab. Weiterlesen

Der Milliarden-Dollar-Fehler

Kennen Sie Prof. Antony Hoare? Nein? Aber Sie kennen sicherlich Null Pointer Exceptions bzw. Null Reference Exceptions? Jeder von uns hat Angst vor diesem Fehler, denn jedem ist schon mehrmals dieser Fehler unterlaufen und passiert immer wieder. Oder hat einen in anderen Programmen in den Wahnsinn getrieben. Es dürfte der Fehler Nr. 1 in der Software-Entwicklung sein. Weiterlesen

Java – immutable Objects

Wenn wir Software entwickeln, ist eines unserer Ziele unvorhersehbare Seiteneffekte zu vermeiden. Ich war mal vor knapp zehn Jahren in einem Projekt, in dem ein Kollege bei aufgetauchten Fehlern im System zum Auftraggeber sagte „Oh! Das ist leider ein Seiteneffekt.“. Irgendwann meinte der Auftraggeber genervt „Ich will das Wort Seiteneffekt nicht mehr hören!“.

Wie kann man solche Fälle minimieren? Ein Punkt ist die richtige Datenkapselung, wie ich hier bereits zeigte. Ein weiterer Punkt ist, Daten einfach unveränderlich zu machen. Denn wodurch entstehen mysteriöse Seiteneffekte? Wenn sich Objekte im Wert ändern, ohne das man es selbst veranlasst oder mitbekommen hat! Weiterlesen