A parte: ho scritto questo in risposta alla domanda di dallin (ora chiusa) ma sento ancora che potrebbe essere utile a qualcuno, quindi ecco qui
Penso che il motivo delle funzioni di atomizzazione sia duplice, e come menziona @jozefg dipende dal linguaggio usato.
Separazione degli interessi
Il motivo principale per farlo è mantenere separati diversi pezzi di codice, quindi qualsiasi blocco di codice che non contribuisce direttamente al risultato / intento desiderato della funzione è una preoccupazione separata e potrebbe essere estratto.
Supponiamo che tu abbia un'attività in background che aggiorna anche una barra di avanzamento, l'aggiornamento della barra di avanzamento non è direttamente correlato all'attività di lunga durata, quindi dovrebbe essere estratto, anche se è l'unico pezzo di codice che utilizza la barra di avanzamento.
Diciamo che in JavaScript hai una funzione getMyData (), che 1) crea un messaggio soap dai parametri, 2) inizializza un riferimento al servizio, 3) chiama il servizio con il messaggio soap, 4) analizza il risultato, 5) restituisce il risultato. Sembra ragionevole, ho scritto molte volte questa esatta funzione, ma in realtà potrebbe essere suddivisa in 3 funzioni private, incluso solo il codice per 3 e 5 (se quello), poiché nessuno degli altri codici è direttamente responsabile dell'ottenimento dei dati dal servizio .
Esperienza di debug migliorata
Se si dispone di funzioni completamente atomiche, la traccia dello stack diventa un elenco di attività, che elenca tutto il codice eseguito correttamente, ovvero:
- Ottieni i miei dati
- Inizializza riferimento al servizio
- Risposta di servizio analizzata - ERRORE
sarebbe molto più interessante quindi scoprire che si è verificato un errore durante il recupero dei dati. Ma alcuni strumenti sono ancora più utili per il debug di alberi dettagliati delle chiamate, quindi prendiamo ad esempio il Debugger Canvas di Microsofts .
Comprendo anche le tue preoccupazioni sul fatto che può essere difficile seguire il codice scritto in questo modo perché alla fine della giornata, devi scegliere un ordine di funzioni in un singolo file in cui il tuo albero delle chiamate sarebbe molto più complesso di quello . Ma se le funzioni sono ben definite (intellisense mi permette di usare 3-4 parole di caso camale in qualsiasi funzione che mi piace senza rallentarmi) e strutturata con l'interfaccia pubblica nella parte superiore del file, il tuo codice verrà letto come pseudo-codice che è di gran lunga il modo più semplice per ottenere una comprensione di alto livello di una base di codice.
Cordiali saluti - questa è una di quelle cose "fai come non dico io come faccio", mantenere il codice atomico è inutile a meno che tu non sia spietatamente coerente con esso IMHO, cosa che io non sono.