@StudMG

Архитектура приложения с GUI?

Доброго времени суток.
Недавно взялся за собственный проект, работаю над интерфейсом программы с PyQt5.
Написав окно для решения одного типа задач (А всего их 5-7) с настройками решателя и интерфейса, понял что кода вышло примерно 1,5 тыс строк, файл получился довольно нагруженным и под конец уже довольно сложно было находить конкретные методы инициализации объектов и методы которые отслеживают события.
Предварительно итоговая программа будет иметь около 15 000 строк кода, понимаю что метрика сложности не совсем верная, но вопрос к более опытным программистам следующий:
Какую архитектуру следует применять при построении довольно больших интерфейсов?
Пока у меня в голове следующие варианты:
1) Довольно сложный в редактировании файл в котором собраны все методы инициализации, настройки и управления логикой событий
2) Создать несколько модулей: первый с классом для инициализации объектов и настроек, второй с классом для описания логики событий и методов, третий будет собственно главным модулем, с описанным классом инициализации окна, который унаследует 2 предыдущих и будет выполнять эти методы
3) Разделить на множество модулей, которые будут полностью описывать отдельные группы виджетов( Например: Button, Label, LineEdit, BrowserText, CommandBox и т.п.), отдельно модуль с логикой интерфейса и потом также унаследовать все классы и описывать основные методы в главном файле.

Пока больше вариантов в голову не пришло, хотелось бы выбрать именно ту комбинацию которая будет давать и относительную простоту редактирования кода, его читабельность и при этом не плодить огромное количество модулей
Какую вы используете архитектуру при решении подобных вопросов?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
@MechanicZelenyy
Вообще для таких случаев уже есть стандартизированные архитектуры, такие как например MVC.

Кроме того следует помнить что композиция часто лучще наследования.
Ну и конечно не надо городить монофайл или god objects.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы