Archiv des Autors: Amin Kharchi

Über Amin Kharchi

Seit 1999 bin ich beruflich Software-Entwickler und nutze dafür hauptsächlich C++ und Java.

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

Javas kaputte Datenkapselung

Meiner Erfahrung nach werden in Objekt-Orientierungs-Diskussionen folgende drei Punkte genannt, auch in dieser Priorität, die die Objektorientierung ausmachen sollen:

  1. Vererbung von Klassen
  2. Schnittstellen
  3. Kapselung

Ist Vererbung wirklich das was Objektorientierung ausmacht? Immerhin ist Vererbung nicht bei jeder Klasse notwendig, sondern nur von Fall zu Fall nötig. Streichen wir also den ersten Punkt von unserer Liste!

Die Schnittstellen, also Funktionen einer Klasse, ermöglichen die Kommunikation mit dem Objekt. Die Klasse kapselt ihre Eigenschaften (Daten) und ermöglicht nur über die Schnittstellen den Zugriff auf die Eigenschaften. Die Daten sollen vor direkter Manipulation geschützt werden, um eine Blackbox zu simulieren.

Ich sehe regelmäßig Java-Code, in dem die Blackbox-Regel gebrochen wird. Viele Programmierer meinen, wenn sie die Daten einer Klasse als Privat deklarieren, ist alles gut.

Weiterlesen

Tipp: Umsteigezeiten bei Bahnfahrten

Ich reise seit letztem Jahr sehr gerne mit dem Zug. Was mich aber immer wieder bei der Deutschen Bahn stört, sind die Zugverspätungen. Nun kann man ja sagen, dass es nicht schlimm ist, ob man am Zielort zehn Minuten später ankommt. Das ist auch richtig. Aber problematisch wird es, wenn man auf einen anderen Zug umsteigen muss, weil es keine Direktverbindung gibt.

Beispiel von Gießen nach Wolfsburg:
db-umsteigezeit

Hier hat mir das Buchungssystem der Bahn die Strecke von Gießen nach Wolfsburg vorgeschlagen mit:

  • 3:52 Std. Reisezeit
  • Zugumstieg in Frankfurt
  • Umsteigezeit von nur 8 Minuten, dadurch hohes Risiko den Anschlusszug zu verpassen

Auf einem großen Bahnhof mit vielen Menschen und vielen Bahnsteigen und schweren Koffer, kann der Umstieg einige Minuten in Anspruch nehmen.
Wenn der Zug auch noch ein paar Minuten zu spät im Umsteigebahnhof eintrifft, wird es ein Glücksspiel den Anschlusszug zu erwischen. Und was ist, wenn der Zug mehr als acht Minuten zu spät ist?

Diese acht Minuten sind eindeutig zu wenig! Und das Buchungssystem ist hier noch großzügig gewesen, denn selbst fünf oder gar drei Minuten Umsteigezeit vermittelt einem das System bei manchen Verbindungen. 😯

Tipp: Umsteigezeit erhöhen, dadurch manchmal sogar schneller am Ziel! 💡

Was kann man tun, um das Risiko zu verringern, den Anschlusszug zu verpassen? Erhöhen Sie die Umsteigezeit! Das geht im Buchungssystem der bahn.de ganz einfach. Und man kann es auch dem Verkäufer im Reisebüro bzw. DB-Reisezentrum mitteilen:

„Bitte mind. 20 Minuten Umsteigezeit!“

db-umsteigezeit-20minDas hat zur Folge, dass das Buchungssystem andere Verbindungen zusammenstellt. Der Umstieg ist dann vielleicht an einem anderen Bahnhof. Das ist aber für die Reise unerheblich, das Ziel bleibt natürlich das gleiche.

Der Witz an der Geschichte ist auch noch, dass die Reisezeit in unserem Beispiel verkürzt wird!

db-umsteigezeit-20min-verbindungenErgebnis:

  • die Reisezeit verkürzt sich auf mind. 3:28 Std. ggü. 3:52 Std.
  • deutlich mehr Umsteigezeit, dadurch geringeres Risiko den Anschlusszug zu verpassen

Obwohl eine der Verbindungen zwei lange Umstiege enthält, ist die Reisezeit kürzer als bei der ursprünglichen Verbindung mit dem kurzem Umstieg! Natürlich muss das nicht immer so sein, aber die Reisezeit muss sich auch nicht zwingend um 20 Minuten verlängern.

Sollte ein Zug z.B. 10 Minuten zu spät ankommen, hat man trotzdem noch Zeit den Anschlusszug zu erreichen.

Was ist, wenn der Zug pünktlich ist? Dann hat man 20 Minuten Zeit sich die Beine zu vertreten, einen Kaffee zu trinken oder das Bahnhofs-WC aufzusuchen. 😉 Und das ist auf jeden Fall angenehmer, als zu hoffen, dass der Zug ja keine Minute zu spät ist! 😀

Unfähige Deutsche Bahn

Nach dieser Erkenntnis fragt man sich doch eines: warum zur Hölle ist das Buchungssystem der Bahn nicht auf eine Umsteigezeit von mind. 20 Minuten eingestellt? Wer kürzere Umsteigezeiten will, könnte das ja auf eigenes Risiko trotzdem umstellen.

Hier sollten die Verantwortlichen des DB-Buchungssystems nachbessern.

Algerien-Reise 2013: Algier-Zentrum

Hier ein paar Fotos aus Algier (Juli 2013):