Restructure ExperimentController into modular components for better maintainability #90
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR addresses the monolithic structure of
ExperimentController.py
by breaking it down into focused, modular components. The original 1,128-line file has been restructured into 4 specialized component classes while maintaining complete backwards compatibility with the existing REST API.Changes Made
🏗️ Component Architecture
Created 4 new component classes in
experiment_controller/
:ProtocolManager
- Handles experiment protocol structuring and parameter validationHardwareInterface
- Manages all direct hardware interactionsPerformanceModeExecutor
- Handles high-performance hardware-triggered scanningFileIOManager
- Centralizes all file I/O operations ✨📊 Quantitative Improvements
🔄 Maintained REST API Compatibility
All existing endpoints preserved with identical behavior:
🧪 Architecture Benefits
Migration Impact
self.hardware.*
,self.file_io_manager.*
, etc.Testing
This refactoring successfully achieves the goals outlined in the issue: better code structure and readability, centralized file I/O management, and maintained REST API interface.
Fixes ImSwitch#89.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.