Übertriebene Sicherheit?
-
assert(pointer!=NULL); if(pointer==NULL){ return; } pointer->p();pointer darf nie NULL sein. Ist das if übertrieben, wenn man schon ein assert hat? Oder ist das gut im Release dann, ne Mehtode zu haben, die zwar nicht funktioniert, aber auch nicht crasht, falls einer beim programmieren nicht aufgepasst hat. Und wenn man dann debug um zu schauen warum es nicht geht, würde das assert kommen.
-
Ich würde das if drinlassen und im Fehlerfall eine Exception werfen.
Zudem ist die Chance sehr groß, dass beim Zugriff auf den NullPointer
dann eine andere Exception geworfen werden würde, die du dann nicht mehr zuordnen könntest.
-
Ich persönlich würde das if weglassen. [Man könnte u.U. sogar das assert weglassen, aber nur wenn der Methodenaufruf auch garantiert ein Segfault erzeugt und man eine einfache Möglichkeit hat, im Debugger an der Stelle anzuhalten.]
Falls man Angst hat, dass man im Release die Einhaltung der assert-Bedingung nicht garantieren kann, würde ich es so nicht machen:
Fusel.Factor schrieb:
Ich würde das if drinlassen und im Fehlerfall eine Exception werfen.
sondern ein eigenes assert-Makro verwenden, dass im Release-Modus statt zu stoppen eine Exception wirft.
Die obigen Betrachtungen gelten für Vorbedingungen von internen Funktionen einer Applikation oder Library, nicht für APIs.