Maison > développement back-end > Tutoriel Python > Demandez pardon, pas la permission : quand ce style de programmation est-il approprié ?

Demandez pardon, pas la permission : quand ce style de programmation est-il approprié ?

Susan Sarandon
Libérer: 2024-12-15 09:21:12
original
978 Les gens l'ont consulté

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

"Demander le pardon et non la permission" en programmation

L'expression "demander pardon et non la permission" est souvent utilisée pour décrire un style de programmation qui favorise la simplicité et la robustesse plutôt que l'exactitude. Ce style est basé sur l'idée qu'il est préférable de détecter les exceptions et de les gérer avec élégance plutôt que d'essayer d'anticiper chaque échec possible et d'écrire du code pour l'empêcher.

Demander la permission ou demander pardon.

Dans le style "demander la permission", le code est écrit de manière à vérifier les conditions susceptibles de provoquer une exception avant d'effectuer toute action pouvant entraîner une erreur. exception. Par exemple :

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

Dans le style "demander pardon", le code est écrit pour simplement essayer d'effectuer l'action et détecter toutes les exceptions qui peuvent survenir :

try:
    with open(filename) as f:
        data = f.read()
except FileNotFoundError:
    print(f"File {filename} not found.")
Copier après la connexion

Pourquoi « Demander pardon » est préféré

Il y a deux raisons principales pour lesquelles le style « demander pardon » est généralement préféré au style « demander pardon » Style "demander la permission":

1. Problèmes de concurrence :

Dans un environnement concurrent, tel qu'un programme multithread ou un programme qui interagit avec des ressources externes, l'état du système peut changer entre le moment où une vérification d'autorisation est effectuée et le moment où lorsque l'action est réalisée. Cela peut conduire à des résultats incorrects ou à des exceptions inutilement levées.

2. Vérifications d'autorisation trop restrictives :

Les vérifications d'autorisation peuvent être trop restrictives, empêchant le code d'effectuer des actions réellement possibles. Par exemple, la vérification de l'existence d'un fichier avant de l'ouvrir peut échouer si le fichier est créé après la vérification mais avant l'opération d'ouverture.

Quand utiliser « Demander pardon »

Le style « demander pardon » est approprié lorsque :

  • L'opération est susceptible d'échouer de manière prévisible et récupérable. façons.
  • Le coût de la vérification de l'autorisation est élevé.
  • Le contrôle de l'autorisation peut changer entre l'heure du contrôle et l'heure de l'opération.

Exemple

L'exemple fourni dans la question démontre une utilisation appropriée du style « demander pardon ». La vérification de la présence de l'attribut bar avant d'y accéder peut échouer si l'attribut est défini ultérieurement. Au lieu de cela, le code doit simplement essayer d'accéder à l'attribut et intercepter toute exception AttributeError qui peut survenir.

Il est important de noter que le style « demander pardon » ne signifie pas que les codeurs doivent être négligents ou écrire du code qui est sujette à des exceptions. Cela suggère plutôt qu'il est préférable de gérer les exceptions avec élégance plutôt que d'essayer d'anticiper chaque échec possible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal