Member_Funktionen prüfen
-
hallo
Ich habe in dem Tutorial : Notizen zu C++ von Peter Thömmes folgendes gelesen:Bei der Implementierung der Methoden einer Klasse ist folgendes grundsätzlich immer zu beachten:
Direkt am Anfang einer Methode immer prüfen, ob alle Parameter ok sind ’ ggf. return
bool MyClass::Func(const MyString& szText) const
{
if(szText.IsEmpty())
return false;
...
return true;
}
Hierdurch vermeidet man unnötige Konstruktionen, Speicherallokierungen und
Destruktionen und erhöht die Performance.Ok ! was macht man bzw. was soll man prüfen, wenn man z. B. folgende Funktionen hätte :
int MyClass::anzeigen() { ....... return 0; } int MyClass::speicheren(int x) { ........ return 0; } int MyClass::bearbeiten( vector<int> vek) { ... return 0; }
Vielen Dank
-
lilian schrieb:
Bei der Implementierung der Methoden einer Klasse ist folgendes grundsätzlich immer zu beachten:
Direkt am Anfang einer Methode immer prüfen, ob alle Parameter ok sind ’ ggf. returnDas ist Unfug. Die Verletzung von Vorbedingungen bzw. allgemein die Tatsache, dass eine Methode ihren Kontrakt nicht erfüllen kann, zeigt man durch eine Exception an.
Im Normalfall bei interner Benutzung, d.h. bei Methoden, auf die nicht jeder dahergelaufene Hinz und Kunz
Zugriff hat, reicht auch eine Assertion:
#include <cassert> ... assert (!mystring.empty());
-
Beispiel:
int MyClass::bearbeiten( vector<int> vek) { ... return 0; }
Die Funktion führt irgendetwas für bestimmte Elemente des Vektor aus. =>
int MyClass::bearbeiten( vector<int> vek) { if (vek.size() <= 0) return 0; ... return 0; }
Das heisst, falls der Vektor leer ist , ein Zustand der nicht zwangsläufig
als Fehler betrachtet werden muss, werden keinerlei unötige Vorarbeiten
ausgeführt.
So interpretiere ich zumindest die Aussage aus dem Buch.