Vor ein paar Tagen habe ich folgende theoretische Fragen zur Prüfung:
(a) Erklären Sie, was defensive Programmierung im Umgang bedeutet
außergewöhnliche Umstände, die während der Ausführung eines a auftreten können
Programm. Sie können auf Beispiele in der Klasse verweisen oder pseudo verwenden
Code zur Beschreibung der Schritte, die zur Verhinderung bestimmter Umstände unternommen wurden
beim Versuch, eine Datei zum Beispiel zu lesen.
[5 Punkte]
(b) Beschreiben Sie kurz allgemein, was mit der Ausnahmebehandlung gemeint ist
in Java und wie sich das von defensiver Programmierung unterscheidet.
[5 Punkte]
Ich dachte immer, dass defensive Programmierung das ganze Paradigma der Programmierung ist und dass die Ausnahmebehandlung Teil davon ist. Während der Prüfung schreibe ich, dass in der "defensiven Programmierung", Programmierer versuchen, alle möglichen Probleme vor der Ausführung des Logikcodes und später Rückkehr Fehlerwert (Beispiel 0) von dieser Funktion, während in Ausnahmefällen die potenziellen Fehler auftritt und gefangen werden durch speziellen Mechanismus, in dem diese Fehler direkt interpretiert werden. Ist es richtig? Was sollten richtige Antworten sein?
Für mich ist das defensive Programmieren der schlimmste Fall: dass Ihre Benutzer völlig verrückte Leute sind und Sie sich und Ihr Programm von ihren verrückten Eingaben verteidigen müssen. Ich glaube, es gibt eine Menge Weisheit in diesem Zitat:
Jeden Tag macht die Software-Industrie größere und bessere, narrensichere Software, und jeden Tag macht die Natur größere und bessere Narren. Bis jetzt gewinnt die Natur
Und vergessen Sie nie, dass Ihre Benutzer nicht nur Ihre Kunden sind. Wenn Sie für eine Bibliothek API verantwortlich sind, könnten Ihre Benutzer andere Abteilung sein. In diesem Fall war eines der großartigsten Beschwerden, die ich jemals in meinem Leben gehört habe:
Selbst nachdem wir alle fehlgeschlagenen Komponententests gelöscht hatten, funktionierte das Programm nicht
Defensive Programmierung bedeutet für mich, Code zu schreiben, um Fälle zu behandeln, von denen Sie nicht denken, dass sie passieren werden, oder sogar passieren können, weil Sie glauben, dass Ihre eigenen Überzeugungen unzuverlässig sind.
Zum Beispiel (nicht zusammengestellt oder getestet, es gelten die allgemeinen Geschäftsbedingungen):
%Vor%Darin enthalten wohl defensive Features:
Nicht jeder würde zustimmen, dass die Nullkontrollen defensiv sind. Der Versuch-Fang ist bis zu dem Punkt völlig sinnlos.
Für mich ist der Härtetest der defensiven Programmierung, dass Sie nicht glauben, dass die Verteidigung jemals benutzt wird.
Tags und Links exception-handling defensive-programming