Ihr Mitarbeiter versucht wirklich, Design by Contract (DbC) aus der Eiffel-Sprache anzuwenden und basiert auf dem Buch: Object Oriented Software Construction, 2nd Edition.
Die Behauptung, wie er sie benutzte, wäre der {P} -Teil der Hoare-Logik oder des Hoare-Dreifach: {P} C {Q}, wobei {P} die Voraussetzung für die Behauptung (ion) s und {Q} ist die Nachbedingung behauptet (Ion) s.
Ich würde die Ratschläge zur Assert-Funktion in PHP mit Fehlern kritisch zur Kenntnis nehmen. Sie möchten keinen fehlerhaften Code verwenden. Was Sie wirklich wollen, sind die Hersteller von PHP, um den Fehler in der Behauptung zu beheben. Bis dahin können Sie den Assert verwenden, ihn jedoch unter Berücksichtigung des aktuellen Buggy-Status verwenden.
Wenn die Assert-Funktion fehlerhaft ist, sollten Sie sie nicht im Produktionscode verwenden. Trotzdem empfehle ich, dass Sie es gegebenenfalls in Entwicklungs- und Testcode verwenden.
Wenn Sie schließlich eine Vertragsstudie zum Entwurf durchführen, werden Sie feststellen, dass die Verwendung von Booleschen Behauptungen im Lichte der objektorientierten klassischen Vererbung Konsequenzen hat - das heißt, Sie dürfen niemals eine Vorbedingung oder eine Nachbedingung schwächen. Dies könnte für Ihre polymorphen Nachkommenobjekte, die miteinander interagieren, gefährlich sein. Bis Sie verstehen, was das bedeutet - ich würde es in Ruhe lassen!
Darüber hinaus empfehle ich den Herstellern von PHP dringend, eine umfassende Designstudie im Auftrag durchzuführen und zu versuchen, sie so schnell wie möglich in PHP zu integrieren! Dann können wir alle von einem DbC-fähigen Compiler / Interpreter profitieren, der die in den Antworten (oben) genannten Probleme behandelt:
- Ein ordnungsgemäß implementierter Design-by-Contract-fähiger Compiler wäre (hoffentlich) fehlerfrei (im Gegensatz zur aktuellen PHP-Behauptung).
- Ein ordnungsgemäß implementierter Design-by-Contract-fähiger Compiler würde die Nuancen des polymorphen Assertion-Logic-Managements für Sie übernehmen, anstatt Ihr Gehirn über die Angelegenheit zu beunruhigen!
HINWEIS: Selbst die Verwendung einer if
Anweisung als Ersatz für die Behauptung (Vorbedingung) hat schwerwiegende Folgen, wenn sie zur Stärkung einer Vorbedingung oder zur Schwächung einer Nachbedingung verwendet wird. Um zu verstehen, was das bedeutet, müssen Sie Design vertraglich studieren, um es zu wissen! :-)
Viel Spaß beim Lernen und Lernen.
'isset
(die Codezeile mitassert
)? Nicht nurisset
(ohne das einfache Anführungszeichen'
)?