Ho iniziato con la stesura di una domanda: "Qual è il modo migliore per eseguire il test delle unità su un costruttore (ad esempio, __construct() in PHP5)", ma quando ho letto le domande correlate, ho visto diversi commenti che sembravano suggerire le variabili membro di impostazione o l'esecuzione di operazioni complicate nel costruttore sono no-nos.Quali sono le cose migliori da fare in un costruttore?
Il costruttore per la classe in questione qui prende un param, esegue alcune operazioni su di esso (assicurandosi che passi un test di sniffing e lo trasformi se necessario), quindi lo memorizza in una variabile membro.
ho pensato i benefici di farlo in questo modo sono stati:
1) che il codice cliente sarebbe sempre certi di avere un valore per questa variabile membro ogni volta che un oggetto di questa classe viene creata un'istanza, e
2) consente di risparmiare un passo nel codice client (uno dei quali potrebbe in teoria essere perse), per esempio,
$Thing = new Thing;
$Thing->initialize($var);
quando potevamo semplicemente farlo
$Thing = new Thing($var);
e fatelo.
È un no-no? Se è così, perché?
In questo caso preferirei passare in un'istanza di dbClass, o usarlo come un Singleton, piuttosto che estendo la classe stessa. – Ross
Sì, ci sono modi per aggirarlo, ma questo è solo un esempio. –
Se non si desidera tale funzionalità, è possibile sovrascrivere il costruttore nell'oggetto utenti. Inoltre alcune lingue, come C#, non ereditano affatto il costruttore. –