Sunday, May 30, 2010

Automatische Formaterkennung

Warum werden trotzdem alle Formate "durchprobiert" (durchblättern oben rechts bei "Format: xxxxxx" ), auch wenn das Format aufgrund der Dateiendung bereits Rückschluss auf das konkrete Format liefern würde?
Diese Frage wurde gerade im Forum gestellt und ich glaube, daß die Antwort auch andere Nutzer interessiert.
Sei beim Lesen von Daten möglichst lax und beim Schreiben möglichst strikt.
so lautet stark verkürzt ein Informatikprinzip, um Programme robust zu implementieren. Daraus folgt, daß sich der Programmcode beim Lesen der Daten auf die Dateiendung sowieso nicht verlassen dürfte und stur versucht die internen Strukturen mit den gelesenen Daten zu füllen. Stattdessen rechnet guter Programmcode immer damit, kaputte oder falsche Daten vorgesetzt zu bekommen. Diese Robustheit sieht der Nutzer nicht direkt, sie kostet aber viel Aufwand bei der Programmierung.

Also habe ich da aus der Not eine Tugend, d.h. ein Feature, gemacht: RouteConverter erkennt ohne Zutun des Benutzers das Dateiformat und liest die Datei ein.

Dafür kommen alle Formate an die Reihe und dürfen versuchen, die Daten zu lesen. Zu "vorsichtige" Formate lehnen Dateien ab, die eigentlich für sie bestimmt wären - bei den XML-basierten Formaten wie dem Google Earth (*.kml) Format passiert das häufiger. Zu "gierige" Formate interpretieren auch Daten, die sie gar nicht verstehen können, und liefern dann Müll zurück - Garmins POI DB (*.xcsv) ist ein Kandidat dafür.

Treten solche Fehler auf, dann bekomme ich die ziemlich schnell von Nutzern berichtet und behebe sie so schnell es geht. Denn nach etwa 250000 Downloads und mit zehntausenden regelmäßigen Nutzern muß ich aufpassen, daß ich in Supportanfragen nicht untergehe.

No comments:

Datenschutz