Domanda

ho una classe di base denominata EventArgs. Derivato da questo sono molti, molti specializzazioni che rappresentano argomenti dell'evento per un particolare tipo di evento. I consumatori di questi eventi possono avere bisogno di un po ', molti, o molto pochi di queste classi di argomenti.

La mia domanda è, vuoi fornire un file di intestazione per ogni tipo (ad esempio, 50 + i file di intestazione per i più diversi), proveresti a raggrupparli per famiglie e hanno un 'comune 'file di intestazione per chi, o lanceresti cautela alla finestra e li gettano in un unico file facile d'uso di testa che può solo essere inclusi?

Un altro approccio potrebbe essere quello di avere 50 file di intestazione, e poi ho potuto introdurre alcuni file header "famiglia" che comprendeva i particolari. Non sono sicuro circa le convenzioni di denominazione per questo genere di cose, quindi è ovvio ciò che è dove.

So che non ci può essere una regola dura e veloce, ma chiedendosi cosa gli altri sviluppatori hanno fatto quando si trovano a scrivere molte classi piccole.

Grazie in anticipo.

È stato utile?

Soluzione

I avrebbe dovuto mettere due classi in intestazioni separati in uno dei seguenti casi:

  • sono enormi
  • sono estranei o improbabile per essere utilizzati insieme
  • ciascuno di essi presenta la propria intestazione dipendenze

In caso contrario, non ha molto senso per separarli. So che alcune persone hanno questo "una classe per header" regola, ma non sembra ragionevole nel tuo caso.

Ciò che è per "famiglie", tra cui piccoli file abbondanza, in alcuni sistemi di compilazione (e file system) questo potrebbe avere un impatto sul tempo di compilazione, e in ogni caso non vedo un punto nel fare questo - di solito la gente userà documentazione o IDE per trovare le classi, senza guardare i nomi dei file header. Così si avrebbe solo farlo per semplificare l'inserimento, ma poi non li perché messa nella stessa intestazione.

Altri suggerimenti

Vorrei raggrupparli in famiglie in base alle classi che gli utenti avrebbero probabilmente desidera utilizzare insieme. 50+ piccoli file di intestazione sembra eccessiva in ogni caso.

Impossibile tutte le varianti dei modelli?

Sono stato in una situazione simile in cui stavo sviluppando una libreria GUI. Inizialmente tutti i componenti (erano piccole classi) sono stati condividono lo stesso file di intestazione e la fonte. Questo ha funzionato abbastanza bene. In seguito ho cercato di metterli in file separati, ma in realtà non ha migliorato nulla. Ha aggiunto solo l'onere di spendere un sacco di tempo a cercare tra i file.

A parte questo, forse si può trarre qualche ispirazione dalla libreria Poco C ++. Questa libreria di solito segue l'una classe per intestazione idioma, ma ci sono eccezioni. Per esempio l'intera gerarchia eccezione è codificato da un file di intestazione e di origine utilizzando un sistema basato macro (vedi Exception.h e Exception.cpp ).

se appartengono alla stessa gerarchia di ereditarietà, metterli allo stesso file .h. Essa aiuta a decidere ordine corretto per le classi. Uno dei meno noti in fase di compilazione il check-in C ++ si basa sul corretto ordine delle classi in .h file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top