Quali sono le migliori pratiche per utilizzare le funzioni per suddividere grandi blocchi di codice in blocchi discreti di logica quando tali funzioni verranno utilizzate solo una volta nel corso della durata di una funzione?
L'esempio canonico per lo sviluppo web è l'inizializzazione di una home page. Quando la pagina viene caricata, puoi fare qualcosa come controllare alcune credenziali e autenticazione, effettuare una chiamata API per ottenere alcuni dati e analizzare tali dati. Naturalmente, tutto ciò potrebbe essere scritto in un formato procedurale all'interno di una grande funzione chiamata initialize (). Nessuna logica verrà riutilizzata in nessun'altra parte all'interno del programma.
Quando mi trovo di fronte a questi scenari, il mio istinto iniziale è quello di dividere ogni parte di logica in una funzione discreta e semplicemente chiamare le funzioni da una funzione initialize (), con alcune righe di codice all'interno di initialize () che eseguono alcuni ripulire e abbattere i doveri. Quindi avrei qualcosa di simile a una funzione authenticate (), get_data () e parse_data (), così come forse alcune funzioni di supporto per le funzioni principali.
Secondo me, questo rende il codice più facile da capire da un livello elevato, rende i test unitari più significativi e aiuta a organizzare il tuo modo di pensare mentre scrivi il tuo codice.
Tuttavia, di recente mi sono scontrato con un ragazzo che essenzialmente pensa al contrario. Ritiene che troppe funzioni portino a "fastidiosi salti mortali", che le funzioni non dovrebbero mai essere utilizzate se il codice non verrà riutilizzato e che l'uso eccessivo di funzioni / classi / moduli / qualsiasi tipo di modularità equivale a ingegneria. Sono stato scoraggiato dalla sua argomentazione e ho sentito che questo porta al merdoso PHP procedurale che spesso rende lo sviluppo del web un incubo, ma forse c'è una certa validità in ciò che sta dicendo?