Я работаю над настольным приложением в PyGTK и, похоже, сталкиваюсь с некоторыми ограничениями моей файловой организации. Пока что я структурировал свой проект так:
- application.py - содержит основной класс приложения (большинство функциональных подпрограмм)
- gui.py - содержит слабосвязанную реализацию графического интерфейса GTK. Обрабатывает обратные вызовы и т. Д.
- command.py - содержит функции автоматизации командной строки, не зависящие от данных в классе приложения
- state.py - содержит класс сохраняемости данных состояния
Пока это довольно неплохо, но на этом этапе application.py начинает работать довольно долго. Я рассмотрел множество других приложений PyGTK, и у них, похоже, есть схожие структурные проблемы. В определенный момент первичный модуль начинает становиться очень длинным, и нет очевидного способа разбить код на более узкие модули без ущерба для ясности и ориентации объекта.
Я рассмотрел вопрос о том, чтобы сделать GUI основным модулем и иметь отдельные модули для подпрограмм панели инструментов, подпрограмм меню и т. Д., Но в этот момент я верю, что потеряю большинство преимуществ ООП и получу ссылки на все все сценарий.
Стоит ли мне иметь дело с очень длинным центральным модулем или есть лучший способ структурировать проект, чтобы мне не пришлось так сильно полагаться на браузер классов?
РЕДАКТИРОВАТЬ I
Хорошо, так что точка взята относительно всего материала MVC. У меня есть грубая аппроксимация MVC в моем коде, но по общему признанию я, вероятно, мог бы получить некоторое расстояние, дополнительно разделив модель и контроллер. Тем не менее, я читаю документацию по python-gtkmvc (кстати, это отличная находка, спасибо за ссылку), и у меня сложилось впечатление, что она не решит мою проблему, а лишь формализует ее. Мое приложение представляет собой один файл glade, как правило, одно окно. Поэтому независимо от того, насколько точно я определяю роли MVC модулей, у меня все равно будет один контроллерный модуль, выполняющий почти все, что в значительной степени и сейчас. По общему признанию я немного неясен относительно правильной реализации MVC, и я собираюсь продолжать исследовать, но мне не кажется, что эта архитектура извлечет больше материала из моего основного файла, просто переименует это файл в controller.py.
Стоит ли думать об отдельных парах Контроллер / Просмотр для отдельных частей окна (панель инструментов, меню и т. Д.)? Возможно, это то, что мне здесь не хватает. Похоже, именно об этом говорит С. Лотт в своей второй статье.
Спасибо за ответы.