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. return

    Das 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. 🙂


Anmelden zum Antworten