Robot's Clean Approach

From bibbleWiki
Revision as of 06:40, 17 February 2026 by Iwiseman (talk | contribs) (Domain)
Jump to navigation Jump to search

Domain

Question: "Does this represent business meaning, rules, or invariants?" If yes → Domain.

Typical things here:

  • Entities
  • Value objects
  • Domain services
  • Domain events
  • Pure logic with no external dependencies

Your mental cue If it would still make sense in a console app with no UI, no database, no internet → Domain.

Application (Use Cases)

Question: "Does this orchestrate domain logic to achieve a user‑level goal?" If yes → Application.

Typical things here: - Use case classes (e.g., LocateMissingTracks) - Input/output models for use cases - Interfaces for persistence, file access, external services - Transaction boundaries

Your mental cue If it coordinates domain objects but doesn't know how they're stored → Application.

Infrastructure

Question: "Does this talk to the outside world?" If yes → Infrastructure.

Typical things here: - EF repositories - File system access - HTTP clients - Logging implementations - Anything that touches OS, network, or frameworks

Your mental cue If it deals with how something is done (not what or why) → Infrastructure.

UI (or Presentation)

Question: "Does this exist only because humans need to see or interact with it?" If yes → UI.

Typical things here: - ViewModels - Commands - Data binding adapters - UI‑specific formatting - Brushes, colors, visual state logic

Your mental cue If it's about display, interaction, or state for the screen → UI.

🎯 The trick: When you're unsure, ask the dependency question If you're stuck on where something goes, ask:

> "What does this thing need to know about?"

- If it needs UI → it's UI. - If it needs infrastructure → it's infrastructure. - If it needs domain → it's application or domain. - If it needs nothing → it's domain.