Полезные шаблоны проектирования для создания аккуратных веб-приложений на Python
Мы решили провести рефакторинг нашего кода, поскольку почти каждая новая функция была реализована в виде хака. Хотелось бы получить несколько советов о том, какие паттерны проектирования было бы полезно иметь в веб-приложении. Такие вещи как Factory или Facade не подходят, я чувствую, что они больше подходят для библиотек, а не для веб-приложений.
Суть веб-приложения в том, что это своего рода транслятор, который понимает запросы пользователя и создает большие запросы к нашим БД. Это своего рода поисковый сервис. У нас есть тонна функций и конфигураций, которые постоянно наступают друг на друга, и нам приходится добавлять уродливые хаки, чтобы их преодолеть. Надеемся получить хорошую базу, которая позволит легче модифицировать длинные сложные цепочки правил.
Нелегко давать практические и конкретные советы в случаях, когда у вас есть только общее представление о функциональности проекта. Но вы можете начать постепенно переписывать кластеры глубоко переплетенных классов, руководствуясь принципами SOLID. Не будьте слишком амбициозны и не пытайтесь рефакторить всю кодовую базу сразу, не имея твердого плана и временных рамок
Я бы особенно подчеркнул принцип "одна/одна ответственность", который, похоже, является самой большой причиной проблем. О рефакторинге написаны целые книги. Вы также можете обратиться к C2 Wiki, чтобы найти советы, которые могут быть применимы к вам. Не существует шаблона проектирования, который подействовал бы как волшебное лекарство. Снижайте сложность, упрощая сеть связей между вашими "модулями": перекрестки, особенно неявные, - это плохо.