La cosa bella di YAGNI è che può essere quantificato . Ci sono anche tre metriche:
- Il tempo risparmiato applicando YAGNI e non implementando qualcosa in anticipo.
- La probabilità che l'applicazione debba essere riscritta
- Il tempo necessario per riscrivere l'applicazione un paio di anni nel futuro.
Quando time saved > time needed for rewriting × probability of rewrite
, allora è vantaggioso non investire in un'architettura più flessibile in questo momento. YAGNI può essere interpretato come un euristico che dice "la probabilità di una riscrittura è vicina allo zero, quindi può essere generalmente ignorata".
Ma qui abbiamo un caso in cui il tempo risparmiato è molto piccolo rispetto al tempo necessario per una riscrittura di tutti i tuoi modelli, e la probabilità di una riscrittura probabilmente non è nulla - quali sono le probabilità che il sito web vorrebbe offrire la navigazione in inglese qualche volta durante i prossimi cinque anni? Sembra un requisito ragionevole per la maggior parte dei siti.
Quindi, invece di dover riscrivere l'applicazione in un secondo momento, potresti voler farlo correttamente la prima volta.
Naturalmente, l'utilizzo della localizzazione offre vantaggi che vanno oltre il supporto di più lingue, ad esempio una corretta formattazione di numeri e virgolette. Inoltre, non inserire testo nei modelli aiuta a separare l'implementazione dalla progettazione dal contenuto. Idealmente, un non-programmatore sarebbe in grado di cambiare il testo di un pulsante e non dovrebbe cercare attraverso un file di modello. Tali considerazioni distorcono ulteriormente il vantaggio di utilizzare un design adeguato anche quando sembra eccessivo.
Recentemente ho scritto un piccolo sito Web (utilizzando un diverso stack tecnologico) e ho esaminato queste considerazioni. Alla fine, ho scoperto che nel mio caso la probabilità di dover supportare lingue aggiuntive era trascurabile, quindi non ho scelto l'internazionalizzazione. Tuttavia, ho preso un po 'di debito tecnico attraverso questa decisione perché i miei file template sono certamente un po' confusi. L'utilizzo dei file di localizzazione non avrebbe risolto completamente questo problema, ma avrebbe contribuito a tenere separati i diversi problemi. Stimo che la mia decisione di lesinare sui file di localizzazione non è valsa la pena, perché dovrò comunque riscrivere i template.