Урок 88. Презентация проекта
⚡ Кратко: старый vs новый подход
Финальный проект — повод применить современные практики: модули вместо монолита, параметризованные запросы вместо конкатенации строк, .env вместо секретов в коде.
- Монолитный файл → модули по ответственности.
- Inline SQL → параметризованные запросы.
- Пароли в коде → переменные окружения через
.env.
Что запомнить: чистая архитектура проще в поддержке и безопаснее.
Частая ошибка: «это же учебный проект, можно не заморачиваться» — но именно здесь закрепляются рабочие привычки.
⚖️ Монолитный подход vs модульная архитектура
| Монолитный подход | Модульная архитектура |
|---|---|
Весь код в одном файле main.py: меню, SQL, MongoDB, форматирование. |
Код разделён: main.py, mysql_connector.py, log_writer.py, log_stats.py, formatter.py. |
| Сложно тестировать отдельные части. | Каждый модуль можно проверить отдельно в интерпретаторе. |
| Одно изменение затрагивает много функций. | Изменение формата вывода не трогает логику поиска. |
| Повторяющийся код копируется в разных местах. | Общие операции вынесены в функции и переиспользуются. |
⚖️ Inline SQL vs параметризованные запросы
| Inline SQL (небезопасно) | Параметризованные запросы |
|---|---|
|
|
Риск SQL-инъекции: пользователь может ввести '; DROP TABLE film; --. |
Данные экранируются драйвером базы данных автоматически. |
| Трудно читать и поддерживать. | SQL-шаблон отделён от значений, код чище. |
⚖️ Секреты в коде vs файл .env
| Секреты в коде | Переменные окружения через .env |
|---|---|
|
|
| Пароль попадает в Git и виден всем. | Файл .env добавлен в .gitignore. |
| Для смены пароля приходится править код. | Пароль меняется в одном файле без изменения кода. |
⚠️ Для учебного проекта допустимо оставить учебные реквизиты в коде, но в реальной работе всегда используйте переменные окружения.