Anche se mi piacciono i benefici del strong sistema di battitura, c'è una cosa che mi preoccupa di più. Penso al sistema di tipo strong come mezzo per forzare le scelte progettuali. Se un team crea un sistema inconsapevole del suo design scadente, i tipi rifletteranno solo scelte di progettazione sbagliate.
Ad esempio, un programmatore trova spesso di dover accedere (si spera solo a leggere) una variabile non dichiarata nel tipo della funzione. Questa funzione può essere utilizzata in molti posti in cui questo vincolo era implicito e soddisfacente. Una modifica della firma attiva un effetto valanga. Cambia escalation fino a quando non colpisce il metodo main
o vicino ad esso. Inoltre, creiamo un problema di compatibilità e anche l'unione diventa un problema.
In un contesto impuro (o orientato agli oggetti), il programmatore troverà il modo di catturare questa variabile. E sono d'accordo che nessuno di loro sarà carino. Ma può fare progressi senza rompere cose (il più delle volte). È una forma di debito tecnico, ma le persone (spesso giustamente) sostengono che è vantaggioso per il progetto.
Qualcuno ha avuto questo tipo di problemi?