Quando lavoro su un team di sviluppatori (3-10 persone), noto spesso che ottenere una definizione precisa e condivisa di ciascuno di ciò che significa ogni termine in codice diventa un problema con la crescita della base di codice.
Dopo alcuni mesi, due concetti completamente diversi possono usare lo stesso nome e due concetti possono usare sinonimi. Indurisce molto la lettura del codice e l'integrazione di nuovi sviluppatori.
Prendo l'esempio della codifica di un client di posta elettronica.
Ecco i problemi più frequenti dopo alcuni mesi:
- Il vocabolario del modello di business è combinato con l'interfaccia utente e il vocabolario tecnico (ad esempio: la visualizzazione dell'interfaccia utente di testo del client di posta elettronica e un attributo di testo di un modello di email)
- Gli sviluppatori traducono lo stesso concetto in modo diverso (ad esempio, la classe email nella vista dettagliata diventa Message in ListView - ma utilizza ancora gli stessi attributi)
- Traduzioni approssimative e non condivise del modello tra gli sviluppatori - a volte a causa della mancanza di un vocabolario inglese che porta a termini usati troppo frequentemente (ad esempio: elemento, testo, etichetta, pulsante, gestore, gestore ...). Questi termini suonano bene, ma è difficile ottenere una definizione condivisa precisa di essi senza parlarne tra i membri del team.
- Fraintendimento dei concetti di business - che porta a mescolare concetti di business in una classe unica e a rompere il Principio di Responsabilità Unica.
Appart di documentare molto prima della codifica (che a volte non è adatta allo sviluppo Agile) - ci sono dei metodi per condividere il vocabolario tecnico e commerciale tra una squadra durante lo sviluppo? In modo che ogni persona abbia una chiara conoscenza di ciò che implica una parola - non in generale, ma nel contesto del progetto e del codice.