- Single file:
BluetoothMeshService.kt(~1000+ lines) - Multiple responsibilities mixed together
- Hard to test and maintain
Responsibilities:
- Service lifecycle management
- Coordination between components
- Public API for sending messages
- Delegate management
Responsibilities:
- BLE scanning and advertising
- GATT server/client setup and management
- Device connection tracking
- Peer discovery and RSSI tracking
Responsibilities:
- Incoming packet handling
- Message type routing
- TTL and duplicate detection
- Timestamp validation
Responsibilities:
- Processing specific message types (ANNOUNCE, MESSAGE, LEAVE, etc.)
- Message parsing and validation
- Relay logic
Responsibilities:
- Message fragmentation for large messages
- Fragment reassembly
- Fragment cleanup and timeouts
Responsibilities:
- Message caching for offline peers
- Delivering cached messages when peers come online
- Cache cleanup and management
Responsibilities:
- Active peer tracking
- Peer nickname management
- Stale peer cleanup
- Peer list updates
Responsibilities:
- Key exchange handling
- Message signing and verification
- Duplicate detection tracking
- Extract each component while maintaining exact functionality
- Use dependency injection for component communication
- Ensure all existing tests pass
- Maintain the same public API
- Easier to test individual components
- Better separation of concerns
- More maintainable code
- Easier to add new features
- Better code reuse