Questa è solo una domanda di aiuto generale, sto cercando di sapere Qual è il vantaggio di avere una serie di piccole funzioni nel codice di un'applicazione C++ rispetto a una lunga funzione complessa contenente tutte le istruzioni necessarie per risolvere un problema?Qual è il vantaggio di rompere un codice in diverse piccole funzioni in C++?
risposta
Modifica Il credito per questo mnemonico va ai commentatori nell'OP.
Rompere le grandi funzioni in più di quelle più piccole può portare a MURDER! Che, in questo caso, potrebbe essere una buona cosa. :)
M-Maintainability. Le funzioni più piccole e più semplici sono più facili da mantenere.
U - Comprensibilità. Le funzioni più semplici sono più facili da capire.
R - Riutilizzabilità. Incoraggia il riutilizzo del codice spostando le operazioni comuni in una funzione separata.
D-Debugability. È più facile eseguire il debug di funzioni semplici rispetto a quelle complesse.
E - Estendibilità. Il riutilizzo del codice e la manutenibilità portano a funzioni che sono più facili da refactoring in 6 mesi.
R - Regressione. Riutilizzo e modularizzazione portano a test di regressione più efficaci.
Ci sono alcuni benefici potenziali per rompere grandi funzioni fino a funzioni più piccoli. Nell'ordine in cui sono caduti dal mio cervello:
Incoraggia il riutilizzo del codice. Spesso in grandi funzioni devi fare più o meno la stessa cosa molte volte. Generando questo in un'unica funzione comune, è possibile utilizzare quel blocco di codice in più posizioni.
Il riutilizzo del codice può essere di aiuto in robustezza e manutenibilità isolando potenziali bug in un posto anziché in più.
È più facile comprendere la semantica della funzione quando ci sono meno righe di codice e un sacco di chiamate a funzioni ben definite.
Se si è contrari alle funzioni con più punti di ritorno, interrompere le grandi funzioni può ridurle.
Aiuta a identificare e isolare (potenziali) problemi con dipendenze di dati sottili che altrimenti sono difficili da notare.
E 'importante notare, tuttavia, che si prende il bene con il male con questo. Ci sono anche alcuni svantaggi potenziali per rompere grandi funzioni up:
Se la grande funzione lavorato prima, cercando di modularizzazione si possono creare difetti.
Nelle applicazioni multithreadded, è possibile introdurre deadlock e condizioni di gara se le politiche di sincronizzazione sono impercettibili o semplicemente errate.
È possibile introdurre un riscontro di prestazioni dalle chiamate di funzione.
Grazie mille – Mody
Codice più chiaro che significa che è più facile da capire e mantenere.
Grazie, risposta molto semplice e chiara – Mody
Una grande funzione complessa è proprio questa: complessa.
La suddivisione del codice in funzioni separate semplifica il lavoro del codice. Innanzitutto, quando si cerca la parte di codice che esegue una determinata attività, sarà più facile trovarla se si trova nella propria funzione.
In secondo luogo, apportare modifiche a una funzione è molto più semplice quando è semplice: non è necessario comprendere una grande quantità di codice per modificare tale funzione.
Inoltre, potrebbe essere più facile riutilizzare quel codice in un altro progetto quando è suddiviso in funzioni più piccole che possono essere utilizzate per scopi diversi dalla semplice funzione singola grande.
I vantaggi di dividere un programma in molteplici funzioni sono:
- maggior parte dei programmi hanno alcune funzionalità di base che è necessario in più luoghi. Avere quella funzionalità in una funzione separata significa che è più ovvio quando viene utilizzata la stessa funzionalità e devi risolvere i problemi solo una volta sola.
- Dividendo un programma in funzioni, è possibile introdurre più livelli di astrazione nel codice. Nella funzione principale si ottiene un'ampia panoramica di ciò che fa il programma e ogni livello in basso sull'albero delle chiamate rivela più dettagli su come vengono realizzati determinati aspetti.
Nei sistemi di dispositivi medici, il codice di interruzione in parti più piccole riduce la necessità di test di regressione e restringe gli effetti del cambiamento a un ambito più piccolo.
Ad esempio, supponiamo di avere 15 funzioni per 3 temi in un unico file.
Se cambio una delle funzioni nel file, tutto deve essere ricostruito e ritestato.
Se divido il file in 3 file separati di 5 funzioni ciascuno, ho solo bisogno di ricostruire 5 funzioni e ripetere il test di 5 funzioni. Il test di 5 funzioni richiede meno tempo di test rispetto a 15 funzioni.
Inoltre, quando gruppi di persone lavorano sullo stesso codice base, la divisione del codice riduce la probabilità che due o più persone lavorino sullo stesso file. Più persone che lavorano sullo stesso file hanno molti conflitti, come il codice di una persona che viene accidentalmente rimosso durante il check-in.
- 1. Qual è l'uso/vantaggio dell'overloading delle funzioni?
- 2. Qual è il vantaggio dell'utilizzo di un HyperlinkedModelSerializer in DRF?
- 3. Qual è il vantaggio dell'utilizzo di metodi statici in Python?
- 4. Qual è il vantaggio di Jikes RVM
- 5. Qual è il vantaggio di WSDualHttpBinding in WCF?
- 6. Qual è il vantaggio di version.rb in Ruby gemma
- 7. Qual è il vantaggio di Class.new in questo Rspec
- 8. Qual è il vantaggio principale dell'utilizzo di eval() in JavaScript?
- 9. Qual è il vantaggio delle "espressioni lambda"?
- 10. Qual è il vantaggio di accettare l'inaccuratezza in virgola mobile in C#
- 11. Qual è il vantaggio dell'uso dell'istruzione 'with .. as' in Python?
- 12. Qual è il vantaggio di Marionette AppRouter + Controller su Backbone.Router?
- 13. Qual è il vantaggio dell'utilizzo del Fornitore in Java?
- 14. Qual è il vantaggio dell'utilizzo di NginX per Node.js?
- 15. Qual è il vero vantaggio degli ambiti
- 16. Qual è il vantaggio dei caricatori su Asynctask in Android?
- 17. Qual è il vantaggio delle risorse Javascript in Eclipse?
- 18. Qual è il vantaggio dell'uso di std :: allocator invece di new in C++?
- 19. Come rompere un infinito per il ciclo (;;) in C?
- 20. Qual è l'equivalente delle funzioni virtuali di C++ in PHP?
- 21. Qual è il vantaggio di questa chiamata di funzione indiretta?
- 22. Qual è il vantaggio della creazione di un oggetto enumerabile usando to_enum in Ruby?
- 23. Qual è il vantaggio di definire alcune funzioni fuori classe nel programma python
- 24. Qual è il vantaggio dell'uso di JAXP invece di DOM/SAX direttamente in Java?
- 25. combineReducers causa il codice di rompere
- 26. Qual è il vantaggio del modello di modulo Javascript?
- 27. Organizzazione delle funzioni di utilità in C++
- 28. C++: rompere il ciclo principale
- 29. Qual è il vantaggio di NS_INLINE rispetto a quello statico in linea?
- 30. Qual è il vantaggio di avere un nome di dominio (spotilocal) che si risolve in 127.0.0.1?
Manutenibilità. Comprensibilità. Riusabilità. Debuggability. –
più importante l'estensibilità di @KerrekSB –
Aggiungerei anche la facilità di test, che tende a generare tutti gli altri già nominati, nella mia esperienza. – eh9