Heim >Backend-Entwicklung >Python-Tutorial >Bitten Sie um Vergebung, nicht um Erlaubnis: Wann ist dieser Programmierstil angemessen?

Bitten Sie um Vergebung, nicht um Erlaubnis: Wann ist dieser Programmierstil angemessen?

Susan Sarandon
Susan SarandonOriginal
2024-12-15 09:21:12980Durchsuche

Ask Forgiveness, Not Permission: When Is This Programming Style Appropriate?

„Bitte um Vergebung, nicht um Erlaubnis“ in der Programmierung

Der Ausdruck „bitte um Vergebung, nicht um Erlaubnis“ wird oft verwendet, um einen Programmierstil zu beschreiben, der begünstigt Einfachheit und Robustheit über Korrektheit. Dieser Stil basiert auf der Idee, dass es besser ist, Ausnahmen abzufangen und sie elegant zu behandeln, als zu versuchen, jeden möglichen Fehler vorherzusehen und Code zu schreiben, um ihn zu verhindern.

Um Erlaubnis bitten vs. um Vergebung bitten

Im Stil „um Erlaubnis bitten“ ist der Code so geschrieben, dass er auf Bedingungen prüft, die eine Ausnahme verursachen könnten, bevor eine Aktion ausgeführt wird, die zu einer Ausnahme führen könnte Ausnahme. Zum Beispiel:

if os.path.exists(filename):
    with open(filename) as f:
        data = f.read()
else:
    raise FileNotFoundError(f"File {filename} not found.")

Im Stil „um Vergebung bitten“ wird Code geschrieben, um einfach zu versuchen, die Aktion auszuführen und eventuell auftretende Ausnahmen abzufangen:

try:
    with open(filename) as f:
        data = f.read()
except FileNotFoundError:
    print(f"File {filename} not found.")

Warum „Bitte um Verzeihung“ bevorzugt wird

Es gibt zwei Hauptgründe, warum der „Bitte um Verzeihung“-Stil im Allgemeinen bevorzugt wird der Stil „um Erlaubnis bitten“:

1. Parallelitätsprobleme:

In einer gleichzeitigen Umgebung, wie etwa einem Multithread-Programm oder einem Programm, das mit externen Ressourcen interagiert, kann sich der Zustand des Systems zwischen dem Zeitpunkt, an dem eine Berechtigungsprüfung durchgeführt wird, und dem Zeitpunkt ändern wann die Aktion ausgeführt wird. Dies kann dazu führen, dass falsche Ergebnisse oder Ausnahmen unnötigerweise ausgelöst werden.

2. Zu restriktive Berechtigungsprüfungen:

Berechtigungsprüfungen können zu restriktiv sein und verhindern, dass Code tatsächlich mögliche Aktionen ausführt. Beispielsweise kann die Prüfung auf Existenz einer Datei vor dem Öffnen fehlschlagen, wenn die Datei nach der Prüfung, aber vor dem Öffnungsvorgang erstellt wird.

Wann „Bitte um Verzeihung“ verwendet werden sollte

Der Stil „um Verzeihung bitten“ ist angemessen, wenn:

  • Die Operation wahrscheinlich vorhersehbar und wiederherstellbar fehlschlägt Möglichkeiten.
  • Die Kosten für die Genehmigungsprüfung sind hoch.
  • Die Genehmigungsprüfung kann sich zwischen dem Zeitpunkt der Prüfung und dem Zeitpunkt der Operation ändern.

Beispiel

Das in der Frage bereitgestellte Beispiel zeigt eine angemessene Verwendung des Stils „um Vergebung bitten“. Die Überprüfung des Vorhandenseins des Balkenattributs vor dem Zugriff darauf kann fehlschlagen, wenn das Attribut später festgelegt wird. Stattdessen sollte der Code einfach versuchen, auf das Attribut zuzugreifen und eventuell auftretende AttributeError-Ausnahmen abzufangen.

Es ist wichtig zu beachten, dass der Stil „um Verzeihung bitten“ nicht bedeutet, dass Programmierer schlampig sein oder Code schreiben sollten ist anfällig für Ausnahmen. Es deutet vielmehr darauf hin, dass es besser ist, Ausnahmen elegant zu behandeln, als zu versuchen, jeden möglichen Fehler vorherzusehen.

Das obige ist der detaillierte Inhalt vonBitten Sie um Vergebung, nicht um Erlaubnis: Wann ist dieser Programmierstil angemessen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn