J'ai un objet qui est instancié dans une méthode linq to sql. Lorsque les champs d'objets sont assignés, je veux vérifier un champ de date et s'il s'agit d'une ancienne date, récupérer les données d'une autre table et effectuer des calculs avant de continuer à assigner cet objet.
Y a-t-il quelque chose de mal à déclencher un tel événement à travers le setter de propriété Ou devrais-je vérifier indépendamment la date à travers un service et faire les changements si nécessaire à un moment donné awewewards?Utilisation du setter d'objet pour déclencher des mises à jour de données, meilleures pratiques
Répondre
La moitié du point d'utiliser des setters à la place des champs publics, par exemple, est de pouvoir déclencher des événements associés à la définition de certaines données.
Mot-clé: associé. Si vous utilisez simplement le setter comme un temps "pratique" pour faire autre chose parce que cela fonctionne, vous le faites mal. Si la définition de cette valeur nécessite d'autres travaux, utilisez le setter pour ce faire.
Il n'y a rien de mal à faire de la logique à l'intérieur de vos setters, mais vous devez faire attention à la quantité de logique que vous mettez dans vos setters. L'un des problèmes fondamentaux des setters est que, comme ils agissent comme des attributs, mais qu'ils ont du code de support, il est facile d'oublier qu'il y a potentiellement des actions non-triviales qui se déroulent dans les coulisses.
Ce genre de chose peut causer des problèmes si vous avez des accesseurs qui utilisent des accesseurs qui utilisent des accesseurs; vous pouvez rapidement vous retrouver avec des problèmes de performance inattendus. Généralement, c'est une bonne idée de garder les actions des setters (ou getters, d'ailleurs) à un ensemble d'actions relativement petit. Par exemple, la validation peut fonctionner parfaitement dans un setter, mais je déconseille généralement de faire des validations sur des ressources externes, à cause de deux choses: premièrement, les retards de ressources peuvent causer des problèmes avec la vitesse d'accès attendue; les accès peuvent détruire votre performance.
Généralement, la règle est la suivante: gardez les choses simples. Ce n'est pas déraisonnable de faire des choses compliquées dans un setter, mais si vous le faites, il est vraiment important de comprendre les conséquences de toutes les actions que vous causerez, et il est extrêmement important de documenter ce qu'il fait extrêmement bien, donc le prochain gars (ou une fille) pour utiliser le code n'essaie pas seulement d'utiliser naïvement l'accesseur et finit par causer des problèmes de contention de ressources massives de façon inattendue.
- 1. Les meilleures pratiques de mise à jour d'un site Web
- 2. Meilleures pratiques pour passer des données d'asp.net-mvc à javascript
- 3. Meilleures pratiques de gestion des exceptions de base de données
- 4. Meilleures pratiques WYSIWYG du navigateur
- 5. Meilleures pratiques SCM pour les bases de données en direct
- 6. Meilleures pratiques pour stocker des données iPhone Apps
- 7. Mises à jour de données manquantes
- 8. Meilleures pratiques du site Sandboxing?
- 9. Quelles sont les meilleures pratiques pour interroger des données binaires à partir d'une base de données?
- 10. Meilleures pratiques d'objet de données/Linq
- 11. Meilleures pratiques pour la création d'une application qui sera mise à jour fréquemment - C++
- 12. Meilleures pratiques pour appliquer des modifications à une application SharePoint
- 13. Utilisation de WCF dans une application ASP.Net et meilleures pratiques
- 14. Quelles sont certaines des meilleures pratiques Sharepoint?
- 15. Meilleures pratiques: synchronisation entre threads
- 16. les meilleures pratiques pour refactorisation avec des variables locales
- 17. Connexion à ASP.NET - Meilleures pratiques
- 18. LINQ to SQL Mise à jour par le biais des questions BLL - Meilleures pratiques
- 19. Mises à jour en cascade avec égalité des clés métier: Hibernation des bonnes pratiques?
- 20. Delphi: initialisation de l'application - meilleures pratiques/approche
- 21. Meilleures pratiques pour Entity Framework?
- 22. Meilleures pratiques: Suivi des impressions de bannières
- 23. Meilleures pratiques pour écrire l'accès aux données dans ASP.NET
- 24. Rails Meilleures pratiques de gestion des fichiers de configuration i18n
- 25. Meilleures pratiques pour les chaînes de connexion
- 26. Meilleures pratiques lors de l'inclusion/utilisation d'une "vue partielle"?
- 27. Dénomination DataContext Meilleures pratiques
- 28. Quels sont les problèmes de mise à jour des applications Android et les meilleures pratiques?
- 29. Silverlight 3 Hors des mises à jour du navigateur
- 30. Mises à jour de base de données SpeedUp