A parte: ho scritto questo in risposta a dallin domanda (ora chiusa) ma sento ancora che potrebbe essere utile a qualcuno quindi ecco qui
Penso che la ragione delle funzioni di atomizzazione sia di 2 volte, e come menzioni @jozefg dipende dal linguaggio usato.
Separazione delle preoccupazioni
La ragione principale per fare ciò è tenere separati pezzi di codice diversi, quindi qualsiasi blocco di codice che non direttamente contribuisce al risultato / intento desiderato della funzione è un problema separato e potrebbe essere estratto.
Supponiamo che tu abbia un'attività in background che aggiorni anche una barra di avanzamento, che l'aggiornamento della barra di avanzamento non sia direttamente correlato all'attività a lungo termine, quindi dovrebbe essere estratto, anche se è l'unica parte di codice che utilizza la barra di avanzamento. / p>
Dire 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 funzione esatta, ma in realtà potrebbe essere diviso in 3 funzioni private, incluso solo il codice per 3 & 5 (se questo) poiché nessun altro codice è direttamente responsabile per ottenere i dati dal servizio.
Esperienza di debug migliorata
Se hai funzioni completamente atomiche, la tua traccia dello stack diventa un elenco di attività, elencando tutto il codice eseguito con successo, cioè:
- Ottieni i miei dati
-
-
- Inizializza il riferimento al servizio
-
- Risposta del servizio analizzata - ERRORE
potrebbe essere più interessante quindi scoprire che si è verificato un errore durante il recupero dei dati. Ma alcuni strumenti sono ancora più utili per eseguire il debug di alberi di chiamata dettagliati, ad esempio Microsofts Debugger Canvas .
Capisco 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 di chiamata sarebbe più disponibile complesso allora. Ma se le funzioni si chiamano bene (intellisense mi permette di usare 3-4 parole di caso camale in qualsiasi funzione per favore senza rallentarmi) e strutturato con interfaccia pubblica nella parte superiore del file, il tuo codice leggerà come pseudo-codice che è di gran lunga il modo più semplice per ottenere una comprensione di alto livello di un codebase.
FYI - questa è una di quelle cose "fai come dico non come faccio io", mantenere il codice atomico è inutile a meno che tu non sia spietatamente coerente con esso. IMHO, che non sono.