Задать вопрос
@XaoTikS
Программист-бэкендер. Разработчик на python.

Как понять свой проект на python, построенный по принципам чистой архитектуры, начинающему?

Я, как начинающий разработчик проектов на python, имею много вопросов касательно понимания проекта, который спроектирован по принципам SOLID:

0004bddafcc72ee207fedd2c4d71cf26.png
Да, нарисовал какие слои от каких зависят, но в каждом файле есть свои классы, методы и пр. Как проследить за данными, которые циркулируют по проекту? Стоит ли нарисовать диаграмму каждой фичи - т. е. последовательность методов, в каком порядке они вызываются, какие именно задействованы, чтобы в целом пришло понимание проекта и причём такое, чтобы не забывать через пару дней? И ещё вопрос - да, я также могу признать, что принципы SOLID ещё не отложились в моей голове - значит стоит заучить теорию и набить руку для навыка построения чистой архитектуры на нескольких мизерных проектах?
Подскажите, что и как лучше всего сделать, чтобы понять свой проект.

Прилагаю мой проект - репозиторий с GitHub -> https://github.com/xaocit/MyManager.git
  • Вопрос задан
  • 666 просмотров
Подписаться 3 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
Забей на диаграмму каждого метода — бери один сценарий и трассируй его дебаггером с брейкпоинтами, смотри call stack. Для «добавить транзакцию» примерно так:
ConsoleUI._menu_add() → TransactionService.add() → repository.save_all()
.

Кстати UI у тебя лезет прямо в self.service._transactions, то есть знает внутренности сервиса напрямую — вот это и есть реальное нарушение границ слоёв, а не то как называются папки.

SOLID зубрить не надо, возьми маленький сценарий и попробуй сменить в нём JSON на SQLite. Сразу станет видно зачем нужны интерфейсы и DIP.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
master_z
@master_z
Программист
Я бы начал вообще с мысли, что для обучения существуют учебники и хорошие курсы. Они как раз создаются для того, чтобы новичку не приходилось самому ломать голову над тем, с чего начать и в какой последовательности изучать материал.
Поэтому на старте я бы не пытался самостоятельно выстроить идеальный маршрут из ООП, SOLID, паттернов и архитектуры. Гораздо разумнее взять хороший учебник по Python, пройти его последовательно и параллельно писать код руками.
А дальше уже идти от простого к сложному:
Python → функции и процедуры → модули → классы → ООП → несколько небольших проектов → SOLID и паттерны → архитектура
После этого уже появляется собственный опыт и реальные проблемы. Классы могут становиться слишком большими, модули — сильно зависеть друг от друга, код становится трудно менять. И тогда SOLID и архитектурные решения воспринимаются не как набор непонятных правил, а как способы решения конкретных проблем.
При разборе больших проектов я бы тоже не пытался сразу понять всю архитектуру. Лучше взять один сценарий и проследить его выполнение
То есть я бы строил обучение по принципу:

сначала учимся писать → сталкиваемся с проблемой → узнаём способ её решения → применяем → понимаем, зачем он нужен.

А не наоборот: сначала учим архитектуру, а потом пытаемся понять, какую проблему она вообще решает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы