Frage

Wenn ich FNC wie folgt aus:

void fnc(const SomeType&){/**/}  

Und wenn ich Liste Vor- und Nachbedingungen für dieses FNC Ich denke, dass Voraussetzung für die Form Listing:
  Sometype eines richtigen Typ sein muss, ist ziemlich dumm, ist es nicht? Ich bin für diesen frage, weil an meiner uni sie uns so etwas Liste wollen, aber wenn der Typ einer arg wird nicht korrekt seinen Code nicht sowieso kompiliert so dass ich denke, dass es falsch ist Voraussetzung für diese Form zu haben. Aber wie immer, meine ich falsch sein.

War es hilfreich?

Lösung

Do angeben, nicht die Hand.

Wie Sie sagen, eindeutig der Code wird nicht kompiliert, wenn die Typen nach oben nicht übereinstimmen.

Die Pre- und Post-Bedingungen werden davon abhängen, was die Funktion versucht, zu tun.

Andere Tipps

Wenn Sie Ihre Lehrer Sie fragen Kommentare dieser Art zu schreiben, ist es wahrscheinlich nicht für den einfachen Fällen, wenn ein solcher Kommentar einfach nur dumm und verifiziert sind vom Compiler trotzdem.

Aber in einigen Fällen, die formale Art im Algorithmus definiert ist, kann restriktiver als der Implementierungstyp in C ++ genutzt werden. In solchen Fällen diese Art von Kommentaren kann etwas Gebrauch hat.

Ein weiterer nützlicher Fall ist für automatisch generierte Dokumentation auf Kommentare basiert, aber das Dokumentationssystem sollte diese Informationen extrahieren, indem sich aus Funktionsprototyp können.

ich es wie folgt angeben würde:

  

Das erste Argument vom Typ SomeType sein soll, oder gießbaren zu.

Ob Compiler überprüfen es spielt keine Rolle. Wenn einig Voraussetzungen können von der Unterzeichnung einer Funktion entwickelt werden, das bedeutet nicht, dass diese Dinge sind nicht Voraussetzung. Nachdem die Voraussetzungen zu lesen, Benutzer sollte in der Lage sein, ein Programm zu schreiben, das richtig kompiliert und ausgeführt werden würde.

Jetzt Kommentare wie das ist dumm - ich bin einverstanden. Die Kommentare sollten einige nützliche Informationen.

Liste der Voraussetzungen sollte sagen, was in Ordnung erfüllt werden muss, um die Funktion auszuführen. Liste der Nachbedingungen sollte sagen, was auf die Funktion der Ausgang erfüllt werden muss. Sie können diese Bedingungen auf drei Arten überprüfen:

  • Laufzeit Behauptung (mit c-Makro assert () ), wenn die Bedingung, die erfüllt werden muss, um die Funktion auszuführen. Ansonsten endet der Prozess.
  • statische Behauptung (mit std :: static_assert wenn Sie c ++ verwenden 0x oder BOOST_STATIC_ASSERT). Dies ist in der Regel nicht der Fall, da diese Prüfung bei der Kompilierung erfolgt
  • Fehlermechanismus (Auslösen einer Ausnahme oder einen Fehlercode zurückkehr)

Sie können auch eine Liste der Vorlage Argumente der Funktion Kommentar hinzufügen möchten, und stellen Sie die Kompilierung schlägt fehl, wenn sie nicht den Anforderungen entsprechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top