Хардкодинг путей
Анти-паттерн
Должна быть возможность задавать пути за пределами кода с помощью переменных окружения, чтобы программа не была ограничена путями, зашитыми в код.
Пример¶
Плохо:
import os
def get_lesson(filename):
filepath = os.path.join('path/to/lessons_files', filename)
with open(filepath, 'r') as file:
raw_lesson = file.read()
...
return lesson
def main():
filename = ...
lesson = get_lesson(filename)
Хорошо:
import os
from environs import Env
def get_lesson(filepath):
with open(filepath, 'r') as file:
raw_lesson = file.read()
...
return lesson
def main():
env = Env()
env.read_env()
lessons_folder_path = env.str('LESSONS_FOLDER_PATH', 'path/to/lessons_files')
filenames = ...
for filename in filenames:
filepath = os.path.join(lessons_folder_path, filename)
lesson = get_lesson(filepath)