Est-ce une bonne pratique d'appeler des méthodes de constructeurs?Est-ce une bonne pratique d'appeler des méthodes de constructeurs?
Répondre
Je suppose que vous parlez d'autres fonctions privées/publiques de la classe en cours d'initialisation.
Comme partout ailleurs, je dirais que la décomposition de grands comportements compliqués en sous-fonctions est une bonne pratique.
La complication évidente serait l'appel de fonctions qui reposent sur le contenu non initialisé de l'objet. Puisque le constructeur et les autres fonctions sont dans la classe ont la même visibilité (du point de vue de la maintenabilité du code) je ne pense pas qu'il soit déraisonnable de dire qu'il est correct de tirer parti d'autres fonctions mais nécessaire pour le programmeur pour s'assurer que de telles dépendances circulaires sont évitées (comme les fonctions virtuelles).
Je place parfois un appel init() dans le constructeur de mes objets si j'ai beaucoup d'autres versions surchargées du constructeur qui ont besoin d'initialiser la classe de la même manière. C'est sec.
Pas si ces méthodes sont virtuelles. Quoi qu'il en soit, assurez-vous que si votre constructeur échoue (ou que l'une des méthodes qu'il appelle échoue) que votre constructeur fasse un "catch" pour effectuer un Dispose() sur tous les IDisposables qu'il a alloués.
- 1. Est-ce une bonne pratique de faire des méthodes de recherche statiques dans les modèles Doctrine
- 2. Numéros de séquence bonne pratique
- 3. Bonne pratique ou mauvaise pratique
- 4. PHP __get() bonne pratique
- 5. Bonne pratique: Normes de documentation
- 6. Est-ce une bonne ou une mauvaise pratique d'appeler des méthodes d'instance à partir d'un constructeur java?
- 7. Bonne pratique: URL relative
- 8. Exceptions: Est-ce une bonne pratique?
- 9. Meilleure pratique avec les constructeurs JFrame?
- 10. C# - L'ajout systématique d'une interface est-il une bonne pratique?
- 11. Bonne pratique pour utiliser JavaScript?
- 12. méthodes Overridable dans les constructeurs avec InitMembers()
- 13. Java - Est-ce une bonne pratique de programmation?
- 14. Est-ce une bonne pratique de supprimer les avertissements?
- 15. L'utilisation de MS SQL Identity est-elle une bonne pratique?
- 16. Mon code démontre-t-il une bonne pratique de WPF?
- 17. Est-ce une bonne pratique d'écrire des classes qui ont généralement une seule méthode publique exposée?
- 18. XML comme source de données: bonne pratique pour la lecture
- 19. Bonne pratique, conception d'objets ASP.NET MVC
- 20. Dans Rails, avoir une Gem qui étend toutes ses méthodes au contrôleur d'application, est-ce une bonne pratique?
- 21. Bonne pratique: livraison d'une bannière de fond d'écran avec OpenX
- 22. Quelle est la bonne pratique pour incorporer des modèles?
- 23. Anonyme Méthodes trop de bonne chose? (C#)
- 24. Bonne pratique pour un projet Sitecore
- 25. L'annulation automatique des tests d'intégration DAO avec Spring Test est-elle une bonne pratique?
- 26. Opérateur ternaire: mauvaise ou bonne pratique?
- 27. Bonne pratique pour plusieurs contrôleurs d'interface
- 28. Javascript bonne pratique - onclick vs discret
- 29. Bonne pratique pour créer WCF RIA DomainService
- 30. Est-ce vraiment une bonne pratique d'utiliser jstl out tag?
... et n'oubliez pas de relancer l'exception. –
Merci pour la réponse les gars.La raison pour laquelle j'ai posé cette question est le livre de directives de conception de cadre dit que constructeur devrait être aussi simple que possible ne devrait être utilisé pour initialiser but.Mais si je dois définir certaines propriétés de la base de données créer une instance de la classe.Si j'ai une classe de projet.Je veux créer une instance de classe en passant un paramètre projectid dans la classe construtor comme Project proj = new Project (projectid); alors je veux vérifier la propriété proj.HasForecasts. qui est défini à partir de la base de données. puis-je définir cette propriété en appelant une méthode du constructeur? – SRK
Oui, vous pourriez faire ce travail dans un constructeur, bien que je pourrais envisager d'utiliser une méthode statique "Create" sur la classe Project à la place. –