LBYL vs EAFP
Введение | |
LBYL | |
EAFP | |
Похожие статьи |
Введение
LBYL - Look before you leap
Проверяй прежде чем делать. Семь раз отмерь один раз отрежь
EAFP - Easier to ask forgiveness then permission
Проще извиниться чем спросить разрешение
LBYL
LBYL на примере Python
# Process file: LBYL import os p = '/path/to/datafile.dat' if os.path.exists(p): process_file(p) else: print(f'No such file as {p}')
Перед тем как обрабатывать файл проверяем, что путь до него существует.
Проблемы:
Проверили только путь. А что если файл содержит какой-то мусор?
Что если путь указывает на директорию?
Получается, что нужно сделать ещё две проверки.
И даже в этом случае есть возможная проблема - гонка - что если файл удалят между
проверкой и открытием? Получается, что нужно обрабатывать исключение в любом случае.
EAFP
EAFP на том же примере из Python
# Process file: EAFP p = '/path/to/datafile.dat' try: process_file(f) except OSError as e: print(f'Error: {e}')
Проверяем получилось или нет, если нет обрабатываем исключение
Теория | |
Программирование | |
Boilerplate код | |
Виды копирования | |
Время работы алгоритма |