Combinazione di file sorgente, come i file di intestazione

3

Ho un progetto in cui i miei file sono sfuggiti di mano a causa del loro volume. Ho iniziato a combinare classi di tipi simili in singoli file di intestazione perché è possibile, ed è ancora una buona pratica, ora posso fare lo stesso per quelle funzioni di classe, che sono dichiarate nei file di origine.

È una buona idea combinare diverse funzioni di classi in un singolo file sorgente, se le classi dicono tutte le sottoclassi della stessa super classe?

    
posta Tucker Morgan 27.04.2012 - 02:57
fonte

2 risposte

4

Non è una cattiva pratica farlo, ma assicurati che se l'utente vuole solo una parte del sistema, può includere solo un'intestazione e ottenere i bit necessari. Avere diverse definizioni di classe e altre cose in un'intestazione va bene e può anche aiutare il tempo di compilazione se ben fatto. Se non è ben fatto, può uccidere i tempi di costruzione in modo cattivo. Quindi, assicurati che ogni intestazione raccolga elementi che non possono essere separati e che rappresentano un modulo (secondario).

Guarda l'implementazione della libreria standard C ++ leggibile (la maggior parte non lo sono, dipende dal provider) e / o meglio, guarda il codice boost come buoni esempi di questa pratica.

    
risposta data 27.04.2012 - 04:11
fonte
2
I have started to combine classes of similar types in single header files..

È un buon approccio implementare la libreria, ma se è il tuo client di implementazione non richiede altre classi aggiuntive per l'implementazione. ad esempio il tuo file di intestazione contiene 1 milione di righe di codice dopo aver integrato un tipo simile di classi, quindi ci è voluto molto tempo per la compilazione.

Secondo la mia esperienza con il design della libreria e gli standard che seguo nella tecnologia Microsoft Linee guida per la progettazione della libreria . In caso di piattaforma .Net, fa non importa molto , ma nel caso di c ++ che ho ottenuto sullo sviluppo della mela Linee guida per la progettazione di librerie dinamiche è che la libreria dovrebbe mantenere questi seguenti fattori di implementazione.

  • Focalizzato
  • Facile da usare
  • Facile da mantenere

Cerca di rendere i tuoi file di intestazione più piccoli e concisi in modo che sia facile capire e aumentare il tempo di compilazione. A volte preferisco avere una singola classe in un singolo file, alcuni esperti suggeriscono di seguire questo approccio. È possibile combinare classi che sono molto accoppiate tra loro in un singolo file.

Ref:
Più classi in un file di intestazione rispetto a un singolo file di intestazione per classe
Guida di stile di Google C ++

    
risposta data 27.04.2012 - 07:36
fonte

Leggi altre domande sui tag