Skip to content

Code quality: split oversized Android files to improve security and performance reviewability #665

Description

@tigercraft4

Summary

Several Android Kotlin files are very large and mix UI, BLE, analytics orchestration, persistence, and state-management concerns. This makes targeted security/performance review harder and increases regression risk.

Evidence

Approximate file sizes from wc -l:

  • android/app/src/main/java/com/noop/ui/TodayScreen.kt: 6,826 lines.
  • android/app/src/main/java/com/noop/ble/WhoopBleClient.kt: 6,516 lines.
  • android/app/src/main/java/com/noop/ui/SleepScreen.kt: 4,234 lines.
  • android/app/src/main/java/com/noop/ui/SettingsScreen.kt: 3,110 lines.
  • android/app/src/main/java/com/noop/ui/HealthScreen.kt: 2,656 lines.
  • android/app/src/main/java/com/noop/ui/AppViewModel.kt: 2,444 lines.

Risk

Large files hide ownership boundaries and make it easier for security, privacy, lifecycle, and performance bugs to slip through review. They also make future audits expensive because unrelated behaviors are interleaved.

Suggested fix

  • Split large UI files into feature-scoped composables and pure presenter/state helpers.
  • Split BLE client responsibilities into connection lifecycle, protocol/offload, persistence, Health Connect writeback, and diagnostics modules.
  • Move pure logic into testable package-level helpers with focused tests.
  • Add complexity or file-size guidance to contribution docs if this repo wants to prevent the pattern from growing.

Audit context

Found during a static code-quality/performance audit. This is a maintainability risk, not a single behavioral bug.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions