Molte cose non sono standardizzate perché ci sono tanti modi per fare la stessa cosa che potrebbe essere giusta in circostanze diverse.
Prendi il tuo innocuo esempio di validazione di più caselle di testo. Lo facciamo tutti, dovrebbe essere semplice, vero?
Bene, ti segnalo link che è un classico documento che descrive come risolvere quel tipo esatto di problema in Smalltalk usando il paradigma MVC. Gestisce una generalizzazione difficile del problema, ma presuppone che si stia lavorando in un'applicazione autonoma. Ci vorrebbe un serio pensiero per applicarlo a un ambiente web. (Quella particolare soluzione è la radice originale del paradigma Model-View-Presenter di Microsoft, che viene utilizzato per risolvere un problema molto diverso dalla convalida.)
OK, vogliamo lavorare in un ambiente web. Ci sono un sacco di stack tecnologici in un ambiente web. Piaccia o no, la convalida è strettamente legata al modo in cui organizziamo la generazione di pagine web. Il che significa che se sto usando un diverso stack tecnologico rispetto a te (in realtà, non utilizzo affatto alcuna tecnologia Microsoft), quindi un pattern di progettazione che funziona per me è probabilmente diverso da quello che funzionerà per te.
OK, diciamo che stiamo lavorando nello stesso stack tecnologico. Possiamo convalidare sul lato server. Opzionalmente convalida in JavaScript. (È ancora necessario convalidare sul lato server perché non si vuole mai e poi mai fidarsi del client.) Supponiamo che io abbia una tecnica di convalida standard che mi è venuta in mente che mi consente di convalidare che i numeri stanno entrando in cose numeriche alcune caselle di testo sono inserite, ma non troppo, ecc. È semplice, veloce, facile e molto buona. Per ogni casella di testo devi solo specificare un tipo e i parametri e voilà, hai la convalida.
Supponiamo ora di avere due campi di testo che dovrebbero essere un intervallo. Quindi il valido in uno deve essere inferiore o uguale al valore nell'altro. Il mio piccolo meccanismo di validazione guarda solo una casella di testo alla volta. Non ha modo di vederne due contemporaneamente e confrontarle. Inizi a tuffarti e cerca di aggiustarlo, e renditi conto che dovrai riscriverne una grossa parte. Quello che ho scritto non era male. Ma non funziona per il tuo caso d'uso. Indovina un po? Avrai bisogno di un approccio molto diverso da quello che ho fatto. E quando hai risolto il problema, se me lo fai vedere, mi farà male perché impone una maggiore complessità a quella che per me è una banale operazione.
Fortunatamente non è una causa persa. Ogni base di codice sviluppa i propri standard per come gestire molti diversi tipi di problemi. Molti di questi standard sono condivisi con una comunità più ampia. Molti altri sono privati di quell'organizzazione e della base di codice.
Ma ora supponiamo che lavori per un'azienda che ha risolto questo problema. Allora sei su un sito come questo, e qualcuno dice: "Ho bisogno di convalidare un sacco di caselle di testo, come faccio?" Sai come farlo, lo fai ogni giorno. Ma per ragioni legali non puoi semplicemente tagliare e incollare le tue credenziali. E il tuo materiale di convalida è legato al mapper relazionale oggetto che stai usando, quindi anche se tu fossi disposto a condividere, non possono facilmente usarlo senza tirare fuori molta più della tua infrastruttura. Il risultato è che, anche se sei seduto lì con una risposta funzionante al problema del questionario, non puoi semplicemente dire loro: "Fallo."
(Nota che se stai usando il popolare codice open source, le probabilità di poter condividere aumentano, così come aumentano le probabilità che l'altra persona abbia già le giuste dipendenze. Questo è uno dei open source.)