Я пытаюсь улучшить свой метод кодирования, и одна вещь, которую я хотел бы попробовать, - принять подход TDD. Я читал немало статей и руководств об этом, но так часто, без практических примеров или тестирования, это не будет долго оставаться в моем мозгу, и я пропущу множество мелких деталей.Отделив GUI от основного кода
Именно поэтому я пытаюсь разработать простое приложение для создания файлов и поиска каталогов в папках. Однако, вот моя проблема: я хотел бы использовать графический интерфейс, а не консольное приложение.
Я уже использую PySide для других приложений, и я знаю ее основу, но я всегда избегал утруждая разделение интерфейса и основных приложения функции (я знаю, очень плохо!)
Для TDD подхода, я думаю, это подходящее время, чтобы узнать, как это сделать. Действительно, я мог бы прочитать, что для TDD с графическим интерфейсом графическая часть должна, по логике, просто быть «бонусным слоем», добавленной в верхней части логики, и что тесты должны сначала протестировать внутреннюю логику, а затем что разработчик может тестировать UI более или менее вручную ...
Итак, вот вопрос: как отделить мой класс пользовательского интерфейса (производный от класса, сгенерированного с помощью pyside-uic) от остальной части моей программы, и как я могу заставить их общаться (для простых данных приложения IO только тогда)? Как я могу испускать и использовать сигналы за пределами этого класса?
Заранее благодарим вас за помощь и советы, надеясь, что я буду понятен моим английским наречием!
Ману
EDIT: Мои первые мысли и чтения проходят через подклассы QThread и взаимодействовать с механизмом сигналов/слотов ... абсолютно необходимо, и единственным способом сделать это Является ли это?
Реализация логики приложения и функции в отдельных файлах в виде классов, а затем импортировать их в файл графического интерфейса пользователя. –
О да, спасибо! Я все еще не уверен в дизайне оо, поэтому большое спасибо за совет. Поэтому я разрабатываю/проверяю свою логику отдельно, а затем, я инициализирую и использую соответствующие классы и методы в своих слотах класса GUI, когда пользовательский ввод требует согласования действий? – Manu310
В значительной степени, да. Внедрите свою прикладную логику с помощью классов (при необходимости, не всегда имеет смысл использовать классы для каждого приложения. Если это не имеет смысла для вашего варианта использования, вы можете просто реализовать функции в отдельных файлах и импортировать эти файлы для использования функции), затем импортируйте внешние файлы в свой графический интерфейс. Например, вы можете иметь обработчик событий кнопки, просто вызывая метод из одного из этих внешних классов/библиотек. –