Daniel Thoma: Frage zu Programmierkonzepten

Beitrag lesen

Hallo *Markus,

In der Regel sollte man Gültigkeitsprüfungen nur an Schnittstellen nach außen anbringen. Außen kann nun aber "außen" bezüglich des Programms oder eines einzelnen Moduls sein. Bei Dir geht es nun wohl um den Fall "Modul". Speziell ein wiederzuverwendendes.

Wenn solche Prüfungen sicherheitsrelevant sind, d.h. falscheingaben zu irgendwelchen unerlaubten Zugriffen, Pufferüberläufen, sonstwas führen könnten, solltest Du sie auf jeden Fall einbauen.
Ein Programmierer, der ein Modul wiederverwendet, wird nicht alle Einschränkungen im Detail kennen, entweder, weil sie nicht dokumentiert sind, oder weil er die Dokumentation nicht gelesen hat ;-) und darüber hinaus wird er einfach Fehler machen.

Ich sehe jetzt aber nicht, was an einer Bibliothek für Analyse von Graphen Sicherheitsrelevant sein könnte. Wahrscheinlich kommt es einfach zu falschen Ergebnissen oder irgendwelchen unerwarteten Exceptions.
In solchen Fällen würde ich auf (aufwendige) Prüfungen verzichten. Wenn Du z.B. erstmal einen ganzen Graph durchlaufen musst, um irgend etwas zu prüfen, verschwendest Du an der Stelle in fast allen Fällen nur rechenzeit. In diesem Fall würde ich versuchen, die Eingabe größten Teils nicht zu prüfen und einfach eine dokumentierte Exception zu werfen, falls Du bei der Analyse dann auf den Fehler stößt.
Kann der Fehler nicht nebenbei erkannt werden, würde ich einfach akzeptieren, dass es dann ein sinnloses Ergebnis gibt. Das ist dann Aufgabe des anwendenden Programmierers, die notwendigen Bedingungen einzuhalten.

Die Antwort ist also: So viel Prüfung, dass nichts richtig kaputt geht, sich aber der Rechen- und Entwicklungsaufwand in sehr erträglichen Grenzen hält. ;)

Grüße

Daniel