Ho 3 funzioni di utilità piccole (15 righe ciascuna), qual è il modo migliore per organizzarle? metterli nel proprio spazio dei nomi in un file di intestazione?Organizzazione delle funzioni di utilità in C++
risposta
Creare un file separato chiamato utility.hpp
e mettere tutte le dichiarazioni di funzioni in esso, preferibilmente con il proprio spazio dei nomi che potrebbero essere solo utility
, e poi mettere le definizioni in utility.cpp
. Se una delle funzioni di utilità è un modello di funzione, devi inserire la definizione nell'intestazione stessa.
Evitare di definire l'utilità class
e inserirvi tutte le funzioni di utilità come membri static
. Questa è seriamente una cattiva idea. Una delle ragioni per cui ciò è negativo, è che non può avvantaggiarsi di Argomento Nome dipendente Ricerca (ADL).
Utilizzare invece namespace.
Esempio,
//utility.hpp
namespace utility
{
void function1();
void function2();
void function3();
template<typename T>
void function4()
{
//function template definition should be here!
}
}
E poi,
//utility.cpp
#include "utility.hpp"
namespace utility
{
void function1()
{
//code
}
void function2()
{
//code
}
void function3()
{
//code
}
}
Creare una classe di utilità separata con util.h (dichiarazioni) e Util.cpp con l'implementazione. Si potrebbe anche andare oltre avendo un'interfaccia di utilità, ma dipende.
* la classe di utilità * è una cattiva idea. – Nawaz
potresti voler controllare lo google styleguide for c++ per alcuni utili suggerimenti su questo argomento ... tuttavia: ci sono molti styleguides in quanto puoi fare le cose in molti modi più o meno utili ... la pratica migliore è scegliere uno styleguide quindi attenersi ad esso per l'intero progetto per coerenza ... (a meno che tu/i tuoi team non vi sentiate molto a disagio a riguardo ...)
Non ho letto la guida di stile di Google a questo particolare riguardo, ma in generale non è una buona guida di stile in C++. –
l'ho trovato molto interessante in quanto c'è una spiegazione sui pro e contro di ogni argomento ... ma sono aperto ai suggerimenti se riesci a fornire una styleguide migliore ;-) – xmoex
La guida di stile per gli occhiali è molto male –
- 1. Organizzazione helper di progetto C# o classi di utilità
- 2. Utilità di test delle prestazioni per C++
- 3. Utilità del parametro 'out' in funzioni numpy
- 4. Implementazione delle funzioni di callback in C
- 5. Modo Pythonic: funzioni di utilità in classe o modulo
- 6. Organizzazione di progetto PHP
- 7. Override delle funzioni in Java vs C++
- 8. Elenco delle funzioni C deprecate?
- 9. Principio delle funzioni virtuali in C++
- 10. L'ordine delle funzioni è importante in C++?
- 11. Uso pratico delle funzioni virtuali in C#
- 12. Scopo dell'albero delle utilità in ATAM
- 13. Dove metto funzioni comuni di utilità in iOS 8 + Swift
- 14. C# regole di sovraccarico delle funzioni
- 15. Mappa C++ delle funzioni di cmath
- 16. Tenere traccia delle classi di utilità
- 17. Dipendenze delle funzioni nell'albero di selezione delle funzioni in Wix
- 18. Organizzazione delle dipendenze di package.json in applicazioni universali/isomorfe
- 19. Organizzazione delle intestazioni del kernel Linux
- 20. Organizzazione dei modelli Ember.js all'interno delle sottocartelle?
- 21. Alternativa delle funzioni di esplosione/implode di php in C#
- 22. File di utilità in php?
- 23. React.js: componenti riutilizzabili vs funzioni di utilità di mixin
- 24. organizzazione di classi e moduli in python
- 25. Qual è l'equivalente delle funzioni virtuali di C++ in PHP?
- 26. C# classe di utilità di serializzazione generica
- 27. iPhone SDK Objective C supporta le funzioni all'interno delle funzioni?
- 28. Organizzazione impostazioni in Django
- 29. Dove inserisco le funzioni di utilità nel mio progetto Python?
- 30. Utilizzo ottimale delle funzioni dinamiche Objective-C
Tranne; nominare le classi util.h \ cpp e il namespace util; è più conveniente =) –
Inoltre, non è necessario il prefisso 'utility_' nel nome della funzione. Questo è lo spazio dei nomi per –
@VJo: Ovviamente, non intendevo, la funzione dovrebbe essere preceduta da 'utility_'. Ma a quanto pare, potrebbe confondere i lettori (soprattutto i neofiti). Così ho modificato il mio post. – Nawaz