Skip to content

Refactor useBuildingManager.ts: Modularize Multi-Responsibility Hook #48

Description

@snjsomnath

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:

  1. Extract CRUD, interaction, selection, tooltip, export, and stats logic into separate hooks under hooks/.
  2. Move raycasting and geometry-related logic into dedicated services.
  3. Refactor calculation, geometry, and export helpers into utils/.
  4. Use index.ts as the main hook orchestrator that composes these modules.
  5. Gradually migrate logic from useBuildingManager.ts into new modules for improved maintainability.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions