Current Issues with useBuildingManager.ts (785 lines):
- Massive Hook: Handles too many responsibilities in a single file.
- Mixed Concerns: Building CRUD, interaction, raycasting, export, and statistics are all tightly coupled.
- Complex State Management: Multiple related states handled together, increasing complexity.
- Poor Separation of Concerns: Difficult to maintain, extend, and test.
Recommended Modularization Structure:
buildingManager/
├── index.ts (main hook orchestrator)
├── hooks/
│ ├── useBuildingCRUD.ts
│ ├── useBuildingInteraction.ts
│ ├── useBuildingSelection.ts
│ ├── useBuildingTooltip.ts
│ ├── useBuildingExport.ts
│ └── useBuildingStats.ts
├── services/
│ ├── BuildingInteractionService.ts
│ ├── BuildingRaycastService.ts
│ └── BuildingGeometryService.ts
└── utils/
├── buildingCalculations.ts
├── geometryHelpers.ts
└── exportHelpers.ts
Actionable Steps:
- Extract CRUD, interaction, selection, tooltip, export, and stats logic into separate hooks under
hooks/.
- Move raycasting and geometry-related logic into dedicated services.
- Refactor calculation, geometry, and export helpers into
utils/.
- Use
index.ts as the main hook orchestrator that composes these modules.
- Gradually migrate logic from
useBuildingManager.ts into new modules for improved maintainability.
Current Issues with
useBuildingManager.ts(785 lines):Recommended Modularization Structure:
Actionable Steps:
hooks/.utils/.index.tsas the main hook orchestrator that composes these modules.useBuildingManager.tsinto new modules for improved maintainability.