C'est un très ouverts à la question, donc, ma réponse va essayer d'être aussi général que possible...
Faire du travail dans les constructeurs n'est pas comme "mauvais" comme il l'habitude d'être il y a des années lors de la manipulation d'exception n'était pas aussi répandue et a évolué comme il l'est aujourd'hui. Vous remarquerez que Google Tech talk principalement regarde les constructeurs à partir d'un point de vue Test. Les constructeurs ont été historiquement très très difficile à déboguer de sorte que le haut-parleur est correct que de faire aussi peu que possible dans un constructeur, c'est mieux.
Cela étant dit, vous remarquerez qu'il est aussi de toucher sur l'injection de dépendances/le fournisseur de modèle qui est tristement célèbre pour compliquer les constructeurs. Dans un tel cas, le laissant SEUL fournisseur/DI code dans le constructeur est préféré. Encore une fois, la réponse dépend de ce que les modèles que vous utilisez et de votre code "s'adapte" ensemble.
Le point essentiel de l'aide d'un constructeur est de créer un joli objet qui peut être utilisé immédiatement; c'est à dire new Student("David Titarenco", "Senior", 3.5)
. Il n'y a pas besoin de faire d' david.initialize()
comme il serait tout à fait ridicule.
Voici une partie de mon code de production, par exemple:
Config Conf = new Config();
Log.info("Loading server.conf");
Conf.doConfig();
Dans le cas ci-dessus, j'ai décidé de ne pas faire n'importe quoi avec le constructeur (elle est vide), mais ont un doConfig()
méthode qui fait tout le disque i/o; j'ai souvent pensé que l' doConfig()
méthode est juste inutile et je dois tout faire dans le constructeur. (J'ai seulement vérifier le fichier de configuration une fois, après tout.)
Je pense qu'il est entièrement dépendant de votre code et vous ne devriez pas penser que le fait de mettre des "trucs" dans votre constructeur est une mauvaise chose. C'est ce que les constructeurs sont pour! Parfois, nous avons emporté avec de la POO (getThis
, setThat
, doBark
), alors qu'en réalité toute une classe a besoin de faire est de charger un fichier de configuration. Dans de tels cas, il suffit de mettre le tout dans le constructeur et l'appeler un jour!