La programmazione funzionale pura diventa un impedimento di agilità? [chiuso]

-1

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?

    
posta sevo 09.01.2016 - 14:27
fonte

1 risposta

6

Prima di tutto, la pura programmazione funzionale non richiede necessariamente la tipizzazione statica. I programmi puri possono essere scritti abbastanza facilmente in Lisp e ci sono altri linguaggi specificamente progettati per supportare la programmazione dinamica pura.

Inoltre, il tipo di hack di cui stai parlando al fine di ottenere l'accesso a risorse che non sono esplicite nel tipo di un oggetto sono il tipo di tecniche che portano a programmi che sono impossibili da cambiare perché troppo potenti accoppiati. Sono l'antitesi stessa dell'agilità. Per mantenere il software agile, è necessario disporre di dipendenze esplicite in modo che le modifiche possano essere apportate in modo sicuro.

Un approccio comune è l'uso dell'iniezione di dipendenza, una tecnica che può essere eseguita con linguaggi funzionali e orientati agli oggetti.

    
risposta data 09.01.2016 - 14:43
fonte

Leggi altre domande sui tag