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 –
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