Parking Lot Kata in PHP: come affrontare un coding test reale con Clean Code e DDD Lite 0 (0)

Parking Lot Kata

By on September 22, 2025 in hiring process, PHP, Programming


Introduzione al PHP Coding Test

Negli anni ho ricevuto diversi test tecnici da aziende di sviluppo software (leggi qui come ho iniziato a lavorare all’estero come sviluppatore software). Alcuni troppo semplici, altri eccessivamente complicati o mal strutturati. Ma uno in particolare mi è rimasto impresso: il Parking Lot Kata.

Un esercizio di programmazione che, nella sua semplicità, riesce a testare davvero le competenze chiave di un developer: analisi dei requisiti, modellazione del dominio, scrittura di codice pulito e capacità di comunicare le proprie scelte.

👉 In questo articolo ti racconto come ho affrontato questo test in PHP 8, con un approccio che chiamo DDD Lite, e perché può essere utile a chiunque voglia migliorare le proprie skill di programmazione.

Alla fine troverai anche il link al mio video su YouTube dove mostro passo dopo passo la soluzione.

I requisiti del PHP Coding Test

Il problema è semplice da enunciare: dobbiamo realizzare un software che gestisca un parcheggio multipiano coperto.

Alcuni vincoli chiave:

  • Il parcheggio deve accettare diversi tipi di veicoli (auto, moto, furgoni).
  • Ogni veicolo ha una dimensione diversa:
    • Auto → 1 posto
    • Moto → 0,5 posti (due moto per uno spazio auto)
    • Furgone → 1,5 posti
  • Ci sono 3 piani, ciascuno con capacità differente.
  • I furgoni possono parcheggiare solo al piano terra.
  • Se non c’è posto, il sistema deve restituire un messaggio adeguato.

La consegna richiedeva di scrivere il programma in PHP a oggetti, senza framework né database, eseguibile da CLI. Valutazione basata su correttezza, qualità del codice, semplicità e scalabilità.

Perché DDD Lite?

Invece di partire subito dal codice “procedurale” dentro al comando CLI, ho scelto di ragionare prima sul dominio.

Gli oggetti fondamentali sono chiari:

  • Garage
  • Piani
  • Veicoli (auto, moto, furgoni, e potenzialmente altri in futuro)

Ho deciso di applicare una forma “light” di Domain Driven Design (DDD Lite):

  • Entity e interfacce per modellare le regole del dominio.
  • Niente Value Object complessi, solo tipi primitivi (per semplicità e tempi di consegna).
  • Logica incapsulata direttamente nelle entità, evitando servizi eccessivi.

Il risultato è un codice pulito, leggibile e facilmente estendibile. Ad esempio, se domani volessi aggiungere i container come nuovi “elementi parcheggiabili”, mi basta farli implementare l’interfaccia Sizeable.

Clean Code in pratica

Alcune scelte che hanno reso la soluzione più chiara e manutenibile:

  • Nomi espliciti per metodi e classi: `hasSpace()`, `leave()`, `park()`, molto più leggibili di `add()` o `remove()`.
  • Interfacce contrattuali (`Sizeable`) per rendere uniforme il comportamento di auto, moto e furgoni.
  • Eccezioni dedicate per casi particolari (es. nessuno spazio per il furgone al piano terra).
  • Uso delle enum di PHP 8.1 per eliminare i magic numbers (es. piano terra = `FloorEnum::GROUND`).

In questo modo il codice non solo funziona, ma si legge bene anche dopo mesi, qualità fondamentale in qualsiasi progetto reale.

Dal codice al video

Nel video su YouTube mostro passo passo:

  • Come ho analizzato i requisiti.
  • La modellazione del dominio con entità e interfacce.
  • La scrittura del codice in PHP 8.
  • L’utilizzo di strumenti come Composer, PHPStan e PHP CS Fixer per garantire qualità.
  • Una piccola estensione con le enum di PHP 8.1 per rendere il tutto ancora più elegante.

👉 Guarda il video completo qui:

Test di programmazione in PHP: Parking Lot Kata con Clean Code & DDD Lite

Conclusione

Il Parking Lot Kata è un ottimo esercizio per allenarsi a:

  • tradurre requisiti in codice,
  • applicare principi di clean code,
  • ragionare in termini di dominio.

Se sei un junior che si prepara ai colloqui, o uno sviluppatore con esperienza che vuole affinare le proprie pratiche di design, questo è un ottimo banco di prova.

💡 Ti invito a guardare il video, lasciare un commento con le tue idee di miglioramento e iscriverti al canale per altri contenuti su PHP, clean code e architetture software moderne.

Leave a Reply

Your email address will not be published. Required fields are marked *

No comments yet. Be the first one!