Voglio determinare quando effettuare un'inizializzazione non banale di una classe. Vedo due volte l'inizializzazione: costruttore e altro metodo. Voglio capire quando usarli.
Scelta 1:
Il costruttore esegue l'inizializzazione
MyClass::MyClass(Data const& data) : m_data()
{
// does non-trivial initialization here
}
MyClass::~MyClass()
{
// cleans up here
}
Scelta 2:
Rinvia l'inizializzazione a un metodo di inizializzazione
MyClass::MyClass() : m_data()
{}
MyClass::Initialize(Data const& data)
{
// does non-trivial initialization here
}
MyClass::~MyClass()
{
// cleans up here
}
Quindi per provare a rimuovere qualsiasi soggettività voglio capire quale è meglio in un paio di situazioni:
- Classe che incapsula una risorsa (finestra / font / una specie di handle)
- Classe che compone risorse per fare qualcosa (un oggetto di controllo / dominio)
- Classi di struttura dei dati (albero / elenco / ecc.)
- [Qualsiasi altra cosa tu possa pensare]
Cose da analizzare:
- Prestazioni
- Facilità d'uso da parte di altri sviluppatori
- In che modo incline agli errori / opportunità di bug
- [Qualsiasi altra cosa tu possa pensare]