top of page

LBYL vs EAFP

  • 20 mars
  • 2 min de lecture

Êtes-vous du genre à regarder avant de sauter ? ou à faire et demander pardon après ? 😀

2 approches différentes en développement, aujourd’hui abordées en Python.


if "key" in data_dict:
	do_something(data_dict["key"])
else:
	# key not in dictionnary
	create_key()

ou

try:
	do_something(data_dict["key"])
except KeyError:
	create_key()

La première s’appelle LBYL : Look Before You Leap (Regarde avant de sauter). Nos amis développeurs en embarqué la reconnaitront bien. 🙂 On sécurise tout afin d’éviter tout plantage qui pourrait être fatal (pointeur null, index invalide….)

La deuxième, EAFP : Easier to Ask Forgiveness than Permission (Plus facile de demander pardon que la permission). On traite d’abord le cas où tout se passe bien, et les problèmes uniquement s’ils surviennent. Comme un bon vieux GoTo ERR: 😀


Alors quelle méthode choisir en Python ? Évidemment, et comme souvent… ça dépend ! La lisibilité, la cohérence et le nombre de lignes peuvent varier d’un contexte à l’autre.


Imaginons que vous souhaitiez lire un fichier.


Avec la méthode LBYL, vous voudriez vérifier :

  • si le fichier existe

  • si vous y avez accès

  • si le stockage n’est pas corrompu

  • si vous avez assez de mémoire pour charger le contenu

  • ….


La liste des checks peut être longue.


Avec la méthode EAFP :

  • Ouverture

  • Lecture

  • Execution

  • Une erreur ? Traitement de l’erreur spécifiée (“fichier introuvable”, “no access”…)


À l’inverse, traiter toutes les erreurs de la même manière avec un gros bloc try/except n’est peut-être pas des plus judicieux… 😀


D’ailleurs vous utilisez sûrement déjà la méthode EAFP sans vous en rendre compte.

Par exemple la méthode get des dictionnaires :

my_dict.get(”key”, “default”)

se traduit par :

try:
	return my_dict[”key”]
except KeyError:
	return “default”

Si vous ne connaissiez pas les exceptions en Python, c’est le moment de vous y mettre. 🙂 C’est juste une manière de penser le control-flow différemment 😉


À vos claviers !


 
 

© LH&TECH, tous droits réservés.

bottom of page