Idea

Un codice interrogabile è un codice le cui eccezioni esprimono regole del business, non un codice pulito

Info

Scritto originalmente in francese. Tradotto dall'IA — il significato è stato preservato, non la prosa.

Idea principale

Un'eccezione chiamata ElementAnnuléNonModifiable non è un messaggio di errore: è una regola del business scritta in codice, leggibile da un operatore del supporto che non programma. Un'eccezione chiamata InvalidStateException dice la stessa cosa al processore e niente a nessun altro. È questo scarto, e non la qualità tecnica del repository, a decidere se una domanda di prodotto può trovarvi la sua risposta.

La condizione vale per tutto il materiale: entità che portano i nomi usati dagli utenti, azioni il cui nome si capisce, eventi che raccontano ciò che è successo, policy che rendono visibili le reazioni a catena, moduli dalla struttura prevedibile. Un repository in cui i concetti del dominio sono nascosti dietro nomi tecnici e le regole sono sparpagliate resta opaco, qualunque sia la cura messa nella sua suddivisione o nella sua copertura di test.

L'esigenza è antica — gli approcci di progettazione guidata dal dominio la sostengono da tempo — e non l'ha creata l'arrivo degli assistenti. Uno sviluppatore che riprende un repository del genere paga la stessa traduzione continua tra il bisogno del business e la meccanica del software; ogni evoluzione richiede di ricostruire quel legame, ogni ricerca di una regola costa di più. Ciò che cambia con la possibilità di interrogare il codice è che questo difetto diventa misurabile dall'esterno del team tecnico: non si traduce più in una lentezza diffusa, ma in risposte che nessuno riesce a ottenere.

Perché è importante

Sposta il criterio da applicare prima di installare un sistema di interrogazione. La domanda da porre a un repository non è «è ben tenuto?» ma «c'è scritto il vocabolario del dominio?» — due proprietà che si incontrano spesso insieme ma non hanno un legame necessario.

Dà anche un argomento non tecnico a un investimento che ne aveva solo uno tecnico. Rinominare i concetti nella lingua del business smette di essere una preferenza da artigiano nel momento in cui il supporto, la prevendita e il product management ne dipendono per ottenere risposte.

Sfumature e limiti

L'uniformità non esiste: uno stesso repository parla la lingua del business nel modulo di fatturazione, scritto vent'anni prima da persone che conoscevano il dominio, e resta muto nello strato di integrazione. La condizione si verifica zona per zona, non sull'intero repository.

Il vocabolario fissato nel codice ha inoltre una data. Il nome di un'entità sopravvissuto a tre riposizionamenti racconta un business che non si pratica più, e proprio la sua leggibilità lo rende ingannevole.

Infine, un nome di dominio corretto può nascondere una regola sbagliata. Che un'eccezione esprima una regola la rende leggibile, non esatta: ciò che diventa interrogabile è il codice, non il prodotto voluto.

Domande aperte

  • Chi decide sul vocabolario quando gli utenti chiamano un oggetto in modo diverso dal codice, e i due usi hanno i loro sostenitori in azienda?
  • Come si misura, prima di avviare il lavoro, lo scarto tra il vocabolario di un repository e quello del dominio?